470 文字
2 分

GitHub Actionsを利用してリリースノートの生成を自動化する

GitHub CLI によるリリースノートの生成#

GitHub CLI のgh release createコマンドで--generate-notesオプションを指定すると、コミットログから自動的に GitHub のリリースノートが生成される。

Terminal window
gh release create v3.1.4 --generate-notes

参考:gh release create

GitHub Actions 上でリリースノートを生成する#

GitHub Actions 上で GitHub CLI を利用してリリースノートを生成するには、permissionsセクションでcontentswriteに設定する必要がある。

permissions:
contents: write

また、過去からのコミットログが必要なため、checkout する際にfetch-depth0に設定する。

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

GitHub CLI は、GitHub Actions にプリインストールされているため、最小構成は次のようになる。

permissions:
contents: write
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create Release
run: |
gh release create v1.0.0 --generate-notes
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

後はバージョンを何らかの方法で受け取れば良い。

例:タグを打つとリリースノートが生成されるようにする#

タグのプッシュをトリガーにすると、github.ref_nameでタグ名を受け取ることができる。

name: Tag Release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create Release
run: |
gh release create ${{github.ref_name}} --generate-notes
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

例:ファイルのバージョン情報を元にリリースノートを生成する#

タグではなく何らかのファイルによりバージョンが管理されているケースを考える。 今回は.versionというファイルでバージョンが管理されている想定で、このファイルに記載されたバージョンが更新されるとタグのプッシュとリリースノートの生成がされるようにする。

name: Create Release Tag
on:
push:
branches:
- main
paths:
- ".version"
permissions:
contents: write
jobs:
create-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get version
id: version
run: |
VERSION=$(cat .version)
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Create and push tag
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git tag -a "v${{ steps.version.outputs.version }}" -m "Release v${{ steps.version.outputs.version }}"
git push origin "v${{ steps.version.outputs.version }}"
- name: Create GitHub Release
run: |
gh release create "v${{ steps.version.outputs.version }}" --generate-notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GitHub Actionsを利用してリリースノートの生成を自動化する
https://blog.ohirunewani.com/posts/github-actions-auto-gen-releases/
作者
hrdtbs
公開日
2025-05-13
ライセンス
CC BY-NC-SA 4.0