
GitHub Actions の Workflow 実行内で Ref(ブランチ名)を取得する方法
この記事は公開されてから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 で確認してみます。
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 内で利用可能なgithubcontext を使用しています。
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(ブランチ名)を取得する方法を確認してみました。
いつも迷ってはドキュメントを見たりググったりしているので、まとめられて良かったです。
以上






