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を使うことで簡単に自動化することができた。
ぜひ試してみてほしい。