0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Github Actionsで成功後にReviewersにコメントを飛ばす!

Last updated at Posted at 2024-03-27

まえがき

Github Actionが終わる前にapprovalしてもらって、テストこけて残念みたいな経験はないですか?
私は結構ありますw
テスト失敗する前にapprovalをすると、再度approvalしないといけない。それを阻止したく、こちらを作成しました。

概要

Github Actionsで成功後したら、Reviewersにメンションつけて、githubにコメントします。
下記の手順で作ります。

  1. githubのPersonal access tokens (classic)でtokenを作成する
  2. 利用する組織やリポジトリに、tokenを登録する
  3. Github Actionsにコメントを作る処理を書く

完成品

name: Flutter CI

on: pull_request

jobs:
  build:
    runs-on: ubuntu-20.04  # 実行するOS
    steps:
    - uses: actions/checkout@v3
    - name: something when command success
      run: |
        comment_body="テストが通りました! レビューをお願いします。"
        reviewers=$(echo "${{ toJson(github.event.pull_request.requested_reviewers.*.login) }}")
        for reviewer in $reviewers; do
          comment_body+=" @$reviewer"
        done
        comment_body=${comment_body//@\[}
        comment_body=${comment_body//@\]}
        curl -X POST -H "Authorization: token $GH_TOKEN" -d "{\"body\": \"$comment_body\"}" "https://api.github.com/repos/$GH_REPO/issues/$NUMBER/comments"
      env:
        GH_TOKEN: ${{ secrets.xxxxxxx }} # 2番で設定したトークン名にする
        GH_REPO: ${{ github.repository }} # リポジトリ名
        NUMBER: ${{github.event.number}} # PR番号
      if: success()  # Github Actions成功のみ動く

1. githubのPersonal access tokens (classic)でtokenを作成する

  1. https://github.com/settings/tokens/new にアクセスする

  2. 認証を解除する

  3. 下記の部分にチェックする
    スクリーンショット 2024-04-08 6.54.25.png

  4. 一番下にあるGenerate tokenを押下する

完了!

2. 利用する組織やリポジトリに、tokenを登録する

  1. リポジトリに遷移して、Settingsを押下する
  2. secrets and variablesのactionsを押下する
  3. Repository secretsを新規登録する
    スクリーンショット_2024-03-27_11_16_14.png
  4. 次の画面で名前と登録する
  5. tokenをSecretに登録する

完了!

3. Github Actionsにコメントを作る処理を書く

下記をGithub Actionsの一番下に置く

    - name: something when command success
      run: |
        comment_body="テストが通りました! レビューをお願いします。"
        reviewers=$(echo "${{ toJson(github.event.pull_request.requested_reviewers.*.login) }}")
        for reviewer in $reviewers; do
          comment_body+=" @$reviewer"
        done
        comment_body=${comment_body//@\[}
        comment_body=${comment_body//@\]}
        curl -X POST -H "Authorization: token $GH_TOKEN" -d "{\"body\": \"$comment_body\"}" "https://api.github.com/repos/$GH_REPO/issues/$NUMBER/comments"
      env:
        GH_TOKEN: ${{ secrets.xxxxxxx }} # 2番で設定したトークン名にする
        GH_REPO: ${{ github.repository }} # リポジトリ名
        NUMBER: ${{github.event.number}} # PR番号
      if: success()  # Github Actions成功のみ動く

補足コメントして、下記の部分で @[@]を削除しています。

comment_body=${comment_body//@\[}
comment_body=${comment_body//@\]}

comment_body="テストが通りました! レビューをお願いします。" はご自由に置き換えください。

ここまで読んでいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?