GitHubActionsを使ってmainブランチへのマージ時にタグとリリースノートを自動生成する
はじめに
前回、リリースノートを対応内容ごとにカテゴライズする方法を紹介した。
👉 GitHubリポジトリ内のリリースノートを対応内容ごとにカテゴライズしてイイ感じにする
今回は特定のイベントをトリガーにしてGitHubActionsを使ってタグとリリースノートを自動生成できるようにしてみる。
組んだワークフロー
早速だがGitHubActionsのワークフロー全体は以下のようになった。
name: Generate release note
on:
pull_request:
branches:
- main
types:
- closed
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Generate tag
run: |
export TAG_NAME=$(sed -n 6P pubspec.yaml | sed 's/version: //')
git tag $TAG_NAME
git push origin $TAG_NAME
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
- name: Generate release note
uses: softprops/action-gh-release@v1
with:
name: ${{ env.TAG_NAME }}
tag_name: ${{ env.TAG_NAME }}
generate_release_notes: true
各ステップの解説
トリガー
今回はmainブランチに対するPullRequestがクローズ(=マージ)されたときにワークフローが走るようにした。
他にもrelease/*のようなブランチがマージされたときや、タグがプッシュされたときなどをトリガーにしてリリースノートを作成することもあるだろう。適宜調整していただきたい。
on:
pull_request:
branches:
- main
types:
- closed
actions/checkout@v3
リポジトリへチェックアウトするアクション。よく使うものなので詳細は割愛。
Generate tag
ここではタグの生成とプッシュを行っている。自分の場合はFlutterアプリのバージョンが書かれているpubspec.yamlからタグ名となるバージョン番号を取得している。
他にもブランチ名release/*やtag/*からタグ名を取得する方法もある。github.refというContextからブランチ名を取得することができるので使い方に合わせて調整してみてほしい。
export TAG_NAME=$(sed -n 6P pubspec.yaml | sed 's/version: //')
git tag $TAG_NAME
git push origin $TAG_NAME
また、今回作成したタグ名は次のステップのリリースノート作成で使いたいので$GITHUB_ENVに書き込んでいる。
$GITHUB_ENVという環境ファイルに環境変数を書き込むことで後続のステップで同じ環境変数が使えるようになる。詳しくは以下の公式ドキュメントを読んでみてほしい。
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
Generate release note
リリースノートの自動生成にはsoftprops/action-gh-releaseというアクションを利用させていただいた。
nameでリリースノートの名前、tag_nameでタグ名を指定している。
また、generate_release_noteをtrueにすることで.github/release.ymlをもとにしてリリースノートの本文も自動生成してくれるようになる。自動生成リリースノートについては以下を読んでみてほしい。
- name: Generate release note
uses: softprops/action-gh-release@v1
with:
name: ${{ env.TAG_NAME }}
tag_name: ${{ env.TAG_NAME }}
generate_release_notes: true
softprops/action-gh-releaseには他にも設定できる項目があるので詳しくはREADMEを読んでいただきたい。
完成!
以上のワークフローを設定した上で、mainブランチに対するPullRequestをマージすると確かにGitHubActionsによってタグとリリースノートが自動生成されるようになった!

おわり
タグとリリースノートの作成といった面倒な作業もGitHubActionsを使うことで簡単に自動化することができた。
ぜひ試してみてほしい。