特定のコミットメッセージを元に処理を行うActions
概要
特定のコミットをトリガーに何かの処理をしたいときの対処法を書きました。
前提
-
GitHub
-
GitHub Actions
コード
name: trigger-comment on: pull_request: types: [synchronize] jobs: check_commit: runs-on: ubuntu-latest env: KEYWORD: '[review]' outputs: is_target: ${{ steps.check_message.outputs.is_target }} steps: - name: checkout uses: actions/checkout@v1 - name: Check commit message id: check_message run: | message=$(git log --format=%B -n 1 ${{ github.event.pull_request.head.sha }}) if echo "$message" | grep -q -F "${{ env.KEYWORD }}"; then echo "::set-output name=is_target::true" else echo "::set-output name=is_target::false" fi build: runs-on: ubuntu-latest needs: check_commit if: ${{ needs.check_commit.outputs.is_target == 'true' }} steps: - name: checkout uses: actions/checkout@v1 - name: echo run: | echo "Hello World"
やっていること
ジョブを以下の二つに分割しています。
-
コミットメッセージを見て対象のコミットかを判断するジョブ
-
実際に実行したい処理のジョブ
これは、Triggerとなる条件は on 句に設定できるものの細かい条件は設定できないためです。
さいごに
かつては [skip ci] をするためにこのような方法を用いることがありましたが
GitHub Actionsがデフォルトで対応したため、その目的では不要となりました。
GitHub Actions: Skip pull request and push workflows with [skip ci]