🐙

メインバージョンのブランチを更新する GitHub Actions ワークフロー

2022/08/18に公開

カスタム GitHub Actions を利用する際、次のように @ 以降の部分にその GitHub Actions リポジトリの任意のタグ、ブランチ、コミットハッシュを指定することが出来る。

actions/checkoutを利用する例
uses: actions/checkout@v3

そして GitHub Actions を公開する際には、v1 v2 v3 のように、メインバージョンの最新版にアクセスできるタグまたはブランチを提供しておくという慣習がある。上記の v3 もそのような慣習に従って用意されたものである。

私も GitHub Actions を公開する際、はじめは手作業で Git の v1 v2 v3 というタグを打っていたのだが、この作業がなかなかに面倒であった。しかし最近は Actions のリポジトリに次のようなワークフローを用意して、この作業を自動化している。

name: Main Version Branch

on:
  release:
    types: [released]

jobs:
  main-version-branch:
    name: Create main version branch
    runs-on: ubuntu-latest
    steps:
      - name: Check out
        uses: actions/checkout@v3
      - name: Push HEAD to main version branch
        run: |
          if [[ '${{ github.event.release.tag_name }}' =~ ^(v[0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
            git push --force origin "HEAD:refs/heads/${BASH_REMATCH[1]}"
          fi

このワークフローにより v1 v2 v3 といったメインバージョンのブランチの更新が自動で行われる。タグではなくブランチにした理由は、このワークフローを作る際に参考にさせて頂いた下記の投稿でも述べているとおり、継続的に更新されるものはタグよりブランチの方が相応しいと思ったからである。

https://r7kamura.com/articles/2022-04-16-keep-main-version-branch

このワークフローは release イベントの released タイプをフックに起動している。こうしておくと、draft や pre-release 状態の Release を作成しても起動せず、それらの状態を変更して正式リリースした場合に起動するので、まずは draft や pre-release で v2.3.4 のようなタグを作成してそのタグの Actions を利用者にお試し提供し、安定しているなと思ったら正式リリース ⇒ v2 ブランチが自動更新される、という挙動になるので便利である。

Discussion

ログインするとコメントできます