🍕

git-pr-release のGo言語実装を作った

2024/03/24に公開

開発の背景

git-pr-release は git-flow のようなリリース用のブランチが存在する場合に、そのリリース用のブランチへのプルリクエストを自動生成するツールです。
リリースに含まれる機能開発のプルリクエストへのリンクを、リリース用のプルリクエストの概要欄に自動生成してくれるなど便利な機能を持っていました。
git-pr-release は Ruby で実装されているため使用するにはインストールが必要です。GitHub Actions で Ruby を使用するには ruby/setup-ruby が利用できます。しかし self-hosted な runner で setup-ruby を使用するには事前に Ruby を $RUNNER_TOOL_CACHE が指すディレクトリにインストールしておく必要があります。

開発のサポートを行うツールのために Ruby をインストールする手間をかけてその手順を運用し続けるのはコストに見合わないと考えて、Go言語による実装を作りました。

作ったもの

https://github.com/odanado/git-pr-release-go

git-pr-release と同様に次の画像のようなプルリクエストを自動生成してくれます。

実行ファイルをダウンロードして手元の PC でコマンドを実行することもできますが、基本的に GitHub Actions で利用することを想定しています。

以下がサンプルのワークフローファイルです。

name: Create Release Pull Request
on:
  push:
    branches:
      - main

jobs:
  create-release-pr:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - name: Setup git-pr-release-go
        uses: KeisukeYamashita/setup-release@v1.0.2
        with:
          repository: odanado/git-pr-release-go
          arch: x86_64
          platform: Linux

      - run: git-pr-release-go --from main --to release/production
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

最後に

git-pr-releaseとGitHub Actionsでワンクリックデプロイを実現する | おそらくはそれさえも平凡な日々 でも紹介されていますが、プルリクのマージボタンをクリックするだけでリリースが完了するのはお手軽さ満点でおすすめです。

興味を持った方は git-pr-release-go を利用してみてください。バグや機能要望は GitHub の issue か Twitter でお気軽にご連絡ください。

Discussion