LoginSignup
2
3

GitHub Actions リリースノートを自動生成する

Last updated at Posted at 2024-04-18

screenshot.png

概要

GitHubのリリースを自動生成するGitHub Actionsを紹介します。

GitHub リリースって使ってる?

OSSなど公に公開しているソフトウェアではGitHubリリースはもちろんよく使われますが、クローズドなリポジトリでは周りに聞いた感じではあまり活用されていないように感じます。

GitHubリリースをしっかり書いているとどのバージョンでどの機能がリリースされたのか、まとめられて見やすくなります。

GitHubリリースには Generate release notes ボタンがあり、差分のPRを列挙してテンプレートを作成してくれます。
そのままで良ければサクっと作れますが、毎回整形しようとすると手間だし人の手で行うとやはり若干手間があります。

Gitシリーズ記事まとめ

利用ツール

リリースノートを生成するアクションが用意されています。

Release Drafter

実装

下記、2つのファイルを作成します。

  • .github/release-drafter.yaml
    • Release Drafterの設定ファイル
  • .github/workflows/create-release-note.yaml
    • Release Drafterのワークフロー

.github/release-drafter.yaml

.github/release-drafter.yaml
name-template: 'v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
categories:
  - title: '🎉 リリース'
    labels:
      - 'release'
  - title: '🚀 機能追加'
    labels:
      - 'feature'
  - title: '🐛 バグ修正'
    labels:
      - 'bug'
  - title: '📝 その他'
exclude-labels:
  - 'ignore-for-release-note'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
change-title-escapes: '\<*_&'
version-resolver:
  major:
    labels:
      - 'major'
  minor:
    labels:
      - 'minor'
  default: patch
template: |
  $CHANGES
footer: |

  ## 🌱 すべての変更点

  https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
  • name-template: リリースの名前(例: v1.2.3 など)
  • tag-template: タグの名前(例: v1.2.3 など)
    • リリース名とタグ名は同じでわかりやすいのでそのままでいいと思います
  • categories: PRのラベル毎にグループ分けして一覧表示してくれます
  • exclude-labels: ignore-for-release-note ラベルが付いているものはリリースノートから除外する
    • 除外したいPRがあると思わないが一応除外設定もできるよって
  • change-template: プルリクタイトルの表示テンプレート
  • change-title-escapes: プルリクのタイトル文字のエスケープ
  • version-resolver: ラベルに応じてバージョニングする
    • major ラベルが付いていた場合: v1.2.3 => v2.0.0
    • minor ラベルが付いていた場合: v1.2.3 => v1.3.0
    • ラベルがない場合: v1.2.3 => v1.2.4
  • template: categories 以外のプルリク一覧を表示する
    • $CHANGES: マージされたプルリクをマークダウン形式のリストで表示する
  • footer: バージョン間の差分を見られるリンクを生成してる

ここにconfigのテストが置いてますが、書き方の例として使えるのでこちらを参考にすると良いです。

.github/workflows/create-release-note.yaml

.github/workflows/create-release-note.yaml
name: Create Release Note
on:
  push:
    branches: [main]
jobs:
  release-draft:
    permissions:
      contents: write
      pull-requests: read
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: release-drafter/release-drafter@v6
        with:
          config-name: release-drafter.yaml
          commitish: main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3