こんにちは、CX事業本部 IoT事業部の若槻です。
GitHub ActionsのWorkflow実行内で、stepのif ExpressionにBranch名を使用することがあるのですが、「どのトリガーのEventでどのContextを使えば良いんだっけ?」と迷うことがあります。
そこで今回は、GitHub ActionsのWorkflow実行内でRef(Branch)名を取得する方法を確認してみました。
先にまとめ
先にまとめですが、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で確認してみます。
.github/workflows/echo.yml
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で取得できました。
ここでのBranch名は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(Branch)名を取得する方法を確認してみました。
いつも迷ってはドキュメントを見たりググったりしているので、まとめられて良かったです。
以上