13
6

GitHub Actionsを使ってリリースのたびにリリースノートとリリースタグを自動作成しよう!

Last updated at Posted at 2023-01-24

はじめに

何かしらのプロダクトをリリースする際に

  • リリースノート
  • リリースタグ

を作成するのが一般的です
GitHub Actionsを使って

  • 変更箇所
  • 作業者

などを記載したリリースノートを下記のように自動作成できます
スクリーンショット 2023-11-22 16.42.30.png

また、プロジェクトのバージョンが記載されたリリースタグを下記のように自動生成できます
スクリーンショット 2023-11-22 16.43.01.png

今回はリリース用ワークフローの設定からreleaseブランチをmainブランチへマージ後にリリースノートが作成されるところまで解説します

GitHub Actionsの設定

以下のようなリポジトリ構成で設定ファイルを作成します

tree
.
└── .github
    ├── release-drafter.yml
    └── workflows
        └── release-drafter.yml

リリースノートのテンプレート作成

下記のように該当するラベルとブランチ名(autolabeler)に応じてカテゴリ化します

.github/release-drafter.yml
name-template: 'v$RESOLVED_VERSION 🌈'
tag-template: 'v$RESOLVED_VERSION'

categories:
  - title: '🚀 Features'
    labels:
      - 'enhancement'
  - title: '🐛 Bug Fixes'
    labels:
      - 'bug'
      - 'emergency'
  - title: '🔧 Refactoring'
    label: 'refactor'
  - title: '📖 Documentation'
    label: 'documentation'
  - title: ' Tests'
    label: 'test'

change-template: '- $TITLE @$AUTHOR (#$NUMBER)'

change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.

version-resolver:
  major:
    labels:
      - 'major'
  minor:
    labels:
      - 'minor'
  patch:
    labels:
      - 'patch'
  default: patch

template: |
  ## Changes
  $CHANGES
  
autolabeler:
  - label: enhancement
    branch:
      - '/^feat(ure)?[/-].+/'
  - label: bug
    branch:
      - '/^fix[/-].+/'
  - label: emergency
    branch:
      - '/^hotfix[/-].+/'
  - label: test
    branch:
      - '/^test[/-].+/'
  - label: refactor
    branch:
      - '/^refactor[/-].+/'
  - label: documentation
    branch:
      - '/^doc[/-].+/'

リリースノート作成用ワークフロー

下記のように作成します
今回はmainブランチにリリースブランチがマージされたときに実行するよう設定します

.github/workflows/release-drafter.yml
name: Create Release Note

on:
  pull_request:
    # PRが閉じたタイミングで実行
    types:
      - closed
    # mainブランチのみを対象とする
    branches:
      - main

permissions:
  contents: read

jobs:
  release:
    permissions:
      # write permission is required to create a github release
      contents: write
      # リリースノートを書くためwrite用のpermissionを付与
      pull-requests: write
    if: github.event.pull_request.merged == true && startsWith(github.head_ref, 'release')
    runs-on: ubuntu-latest
    steps:
      - name: Create Release Tag And Note
        env:
          # このトークンは自動生成されるのでsecretsを登録する必要ない
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # PRのタイトルと内容をRelease内容に追加する
          RELEASE_TAG: ${{ github.event.pull_request.title }}
        uses: release-drafter/release-drafter@v5
        with:
          tag: ${{ env.RELEASE_TAG }}
          name: Release ${{ env.RELEASE_TAG }}
          version: ${{ env.RELEASE_TAG }}
          publish: true

mainブランチへマージ

releaseブランチをmainへマージします
今回のリリースは1.0.0とします
スクリーンショット 2023-11-22 16.43.49.png

スクリーンショット 2023-11-22 16.43.54.png

下記のようにワークフローが正常に実行されたら成功です
スクリーンショット 2023-11-22 16.44.24.png

マージ後

mainブランチへmerge後、下記のようにリリース用のリンクが作成されます
スクリーンショット 2023-11-22 16.45.15.png

下記のようにリリースノートが作成されました
このように

  • PRの作成者
  • ラベルに応じたカテゴリーの割り振り

が記載されているリリースノートとリリースタグが作成されていることを確認できれば成功です
スクリーンショット 2023-11-22 16.42.30.png

スクリーンショット 2023-11-22 16.43.01.png

参考

13
6
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
13
6