まえがき
Github Actionが終わる前にapprovalしてもらって、テストこけて残念みたいな経験はないですか?
私は結構ありますw
テスト失敗する前にapprovalをすると、再度approvalしないといけない。それを阻止したく、こちらを作成しました。
概要
Github Actionsで成功後したら、Reviewersにメンションつけて、githubにコメントします。
下記の手順で作ります。
- githubのPersonal access tokens (classic)でtokenを作成する
- 利用する組織やリポジトリに、tokenを登録する
- 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を作成する
-
認証を解除する
-
一番下にあるGenerate tokenを押下する
完了!
2. 利用する組織やリポジトリに、tokenを登録する
- リポジトリに遷移して、Settingsを押下する
- secrets and variablesのactionsを押下する
- Repository secretsを新規登録する
- 次の画面で名前と登録する
- 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="テストが通りました! レビューをお願いします。"
はご自由に置き換えください。
ここまで読んでいただきありがとうございました!