GitHub Actions の Workflow 実行内で Ref(ブランチ名)を取得する方法

2022.06.03

この記事は公開されてから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 内で利用可能な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(ブランチ名)を取得する方法を確認してみました。

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

以上