こんにちは、宮本です。最近はAstroフレームワークを触っています。今まではReactのNext.jsしか触ってこなかったので、なかなか新鮮な気持ちです。……が、残念ながら本文はAstroは関係ないです。そのうちAstroの記事も書きたいですね。
はじめに
さて、今回はGitHubのプルリク作成時のちょっと便利なGitHub Actionの紹介です。
プルリク作成時に地味にこんな悩みがありました。
「たまにプルリクを作成したマージ先のブランチで、masterとdevelopを間違える」
……あまりに初歩的すぎて何も言葉が出ないかもしれませんが、それでも極々稀に、本当に稀にやらかします。今のところは流石に作った後で気づいて直したり、レビュー内で指摘が入って本当にやらかしたことはまだないですが、もしかするといずれやらかすかもしれません。CI/CDを完備していた場合には、そのままうっかり本番環境に……なんて目も当てられません。
というわけで、以下のような感じでプルリクを作成したら自動で主張激しくbotにコメントをしてもらっています。
実装
仕掛けているワークフローは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
name: Pull Request Comment on: pull_request: types: [opened] jobs: post_comment: runs-on: ubuntu-latest timeout-minutes: 5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout uses: actions/checkout@v3 - name: Check Base Branch name # 設定ファイルを取得し、コメント投稿対象のプルリクか判定 working-directory: .github/workflows/conf run: | BRANCH_ACTION=`cat pull_request_comment.json | jq '.["${{ github.base_ref }}"]' -r` if [ "$BRANCH_ACTION" != "null" ]; then echo "IS_COMMENT_POST=true" >> $GITHUB_ENV COMMENT_FILE_PATH=`echo $BRANCH_ACTION | jq '.["comment-file-path"]' -r` echo "COMMENT_FILE_PATH=$COMMENT_FILE_PATH" >> $GITHUB_ENV fi - name: Create comment # ghコマンドを利用してコメントを投稿 working-directory: .github/workflows/conf if: ${{ contains( env.IS_COMMENT_POST, 'true') }} env: URL: ${{ github.event.pull_request.html_url }} run: | gh pr comment -F ${{ env.COMMENT_FILE_PATH }} "${URL}" |
設定ファイルとして、 .github/workflows/conf/pull_request_comment.json
を定義しています。
1 2 3 4 5 6 7 8 |
{ "master": { "comment-file-path": "comment_files/master.md" }, "develop": { "comment-file-path": "comment_files/develop.md" } } |
このjsonには、キーにプルリクエスト作成時にコメントを投稿したいheadブランチを指定しています。
そしてこのjsonファイルで指定したパス(.github/workflows/conf/comment_files/master.md)には、プルリク作成時に投稿したいコメントを書いたmdファイルを配置します。mdファイルにコメント内容を分離して、コメントの編集は気楽にできるようにしています。
1 2 3 |
# masterブランチへのマージ 本番環境へのリリースを行うPRです。 |
さいごに
さて、プルリク作成時に、ブランチごとに任意のコメントを投稿するワークフローの紹介でした。
今回の例ではただブランチ名とリリース用のプルリクだと教えてくれるだけですが、投稿するコメント内容を編集すれば、開発時のプルリクには不要だけどリリース前に必要なチェック項目(リリース日の調整、GTMの設定変更の確認など)を自動で投稿するようなこともできます。逆もまた然り。プルリクテンプレートに記述しておくこともできますが、この項目はリリース時にしかいらないのに行が多くて邪魔だし毎回消すのも面倒、と思った場合は入れてみるのもありかもしれません。