この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、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 で確認してみます。
.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で取得できました。
ここでのブランチ名は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(ブランチ名)を取得する方法を確認してみました。
いつも迷ってはドキュメントを見たりググったりしているので、まとめられて良かったです。
以上