GitHub Actions の Workflow 実行内で Ref(ブランチ名)を取得する方法
こんにちは、CX事業本部 IoT事業部の若槻です。
GitHub Actions の Workflow 実行内で、step の if Expression に Branch名 を使用することがあるのですが、「どのトリガーの Event でどの Context を使えば良いんだっけ?」と迷うことがあります。
そこで今回は、GitHub Actions の Workflow 実行内で Ref(ブランチ名)を取得する方法を確認してみました。
先にまとめ
先にまとめですが、Event 毎/ Context 毎で取得できる値は次のようになりました。
Push Event | Pull Request Event | |
---|---|---|
$GITHUB_REF | refs/heads/{BRANCH_NAME} |
refs/pull/{ISSUE_NUMBER}/merge |
${{ github.ref }} | refs/heads/{BRANCH_NAME} |
refs/pull/{ISSUE_NUMBER}/merge |
${{ github.ref_name }} | {BRANCH_NAME} |
{ISSUE_NUMBER}/merge |
${{ github.head_ref }} | - | {HEAD_BRANCH_NAME} |
${{ github.base_ref }} | - | {BASE_BRANCH_NAME} |
確認してみた
次のような Workflow file で確認してみます。
on: push: pull_request: jobs: echo: runs-on: ubuntu-latest steps: - run: | echo '1' $GITHUB_REF echo '2' ${{ github.ref }} echo '3' ${{ github.ref_name }} echo '4' ${{ github.head_ref }} echo '5' ${{ github.base_ref }}
2から4については、Workflow 内で利用可能なgithub
context を使用しています。
Push Eventの場合
Push Event Trigger(on: push
)で Workflow を実行した場合は、1,2,3で取得できました。
ここでのブランチ名はmain
です。
1 refs/heads/main 2 refs/heads/main 3 main 4 5
Pull Request Eventの場合
feature branch を使用して Pull Request を作成します。
Pull Request Event(on: pull_request
)で Workflow を実行した場合は、3および4で head branch、5で base branch が取得できました。
ここでの Issue 番号は92
、head branch はfeature/hoge
、base branch はmain
です。
1 refs/pull/92/merge 2 refs/pull/92/merge 3 92/merge 4 feature/hoge 5 main
おわりに
GitHub Actions の Workflow 実行内で Ref(ブランチ名)を取得する方法を確認してみました。
いつも迷ってはドキュメントを見たりググったりしているので、まとめられて良かったです。
以上