😌
GithubActionsで特定のコミットメッセージの場合のみStepを実行する方法
概要
トリガーイベントによって多少異なり、pull_requestイベントの場合に少し詰まったのでメモ。
サンプルコード
HEADのコミットメッセージが[execute]
の場合にHelloWorldを出力するジョブを実装する。
push
イベントオブジェクトからコミットメッセージを取得できるのでシンプルに実装可能。
push
name: workflow-push
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out codes
uses: actions/checkout@v3
- name: execute
if: "contains(github.event.head_commit.message, '[execute]')"
run: echo "Hello World"
pull_request
イベントからコミットメッセージを取得できないため、コミットハッシュからメッセージを取得する処理が必要。
ポイントは2つ
- HEADブランチにCheckoutする
- HEADコミットのハッシュからコミットメッセージを取得する
pull_request
name: workflow-pull_request
on:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out codes
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.ref }} # ポイント1
- name: execute
run: |
message=$(git log --format=%B -n 1 ${{ github.event.pull_request.head.sha }}) # ポイント2
if echo "$message" | grep -F "[execute]"; then
echo "Hello World";
fi
Discussion