470 文字
2 分
GitHub Actionsを利用してリリースノートの生成を自動化する
GitHub CLI によるリリースノートの生成
GitHub CLI のgh release create
コマンドで--generate-notes
オプションを指定すると、コミットログから自動的に GitHub のリリースノートが生成される。
gh release create v3.1.4 --generate-notes
GitHub Actions 上でリリースノートを生成する
GitHub Actions 上で GitHub CLI を利用してリリースノートを生成するには、permissions
セクションでcontents
をwrite
に設定する必要がある。
permissions: contents: write
また、過去からのコミットログが必要なため、checkout する際にfetch-depth
を0
に設定する。
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/