GitHub ActionsでJobやStepをデフォルトブランチだけ動かすようにする (2023年版)

この記事は はてなエンジニア Advent Calendar 2022 の43日目の記事です。

GitHub ActionsでJobやStep単位でデフォルトブランチの時だけ実行したい処理を書く時にはいつもこのように書いていました。

if: github.ref == 'refs/heads/main'

これは2023年現在ではこのようにブランチ名を書かない形で書き換えることができます。

if: github.ref_name == github.event.repository.default_branch

ref_name はrefsの含まれていないブランチ名やタグ名単体が入っており、 github.event.repository.default_branch も同様にブランチ名だけが入っているのでそのまま比較できます。

The short ref name of the branch or tag that triggered the workflow run. This value matches the branch or tag name shown on GitHub. For example, feature-branch-1. https://docs.github.com/en/actions/learn-github-actions/contexts#github-context

ref_name はGitHub Actionsのリリース初期にはないプロパティで、おそらく2021年11月のこのPRで追加されています。

github.com

複数のリポジトリを扱っている場合でデフォルトブランチ名がバラバラだったとしても単純にコピペできるし、後からデフォルトのブランチ名を変えたくなった時にも書き換えする必要がなくなるので便利です。

ちなみに on で指定する部分には github.event.repository.default_branch のような変数は使えないのでブランチを列挙する必要があるので注意です。*1

on:
  push:
    branches:
      - main
      - master