GitHub ActionsのWorkflow実行内でRef(Branch)名を取得する方法

2022.06.03

こんにちは、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内で利用可能なgithubcontextを使用しています。

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)名を取得する方法を確認してみました。

いつも迷ってはドキュメントを見たりググったりしているので、まとめられて良かったです。

以上