cryptofoundry

cryptofoundry へのお問い合わせ

構築または自動化したい内容をお聞かせください。

Developers & API

リリースノート自動生成のための Release Drafter

ADAMANTは、リポジトリ全体のリリースノート生成を自動化するためにRelease Drafterを導入しました。このツールは、タイトル、ラベル、作成者を含むマージ済みのプルリクエストを収集し、「機能追加」「修正」「タスク」などのカテゴリ別に変更点をグループ化したドラフトリリースを生成します。これにより、手動での編集なしで、明確で標準化されたMarkdown形式のリリースノートが作成されます。

カテゴリ分けは2つの補完的な仕組みで動作します。1つ目はfeature、fix、chore、breakingといったラベルを使用するラベルベースの方法です。2つ目は[Bug]、[Feat]、[Chore]などのPRおよびイシューのタイトル接頭辞を使用する方法です。両方のアプローチを併用できます。

含まれるファイル

このシステムは2つのファイルで構成されています。ワークフローファイルは.github/workflows/custom-release-draft.ymlにあり、リリースノート生成スクリプトは.github/scripts/release-notes.jsにあります。これらはどちらもAdamant-im/.githubリポジトリで管理されています。

リポジトリでの有効化

Release Drafterを有効にするには、ワークフローファイルを自分のリポジトリにコピーします。このワークフローは対象リポジトリをチェックアウトし、Node.jsをセットアップして必要なOctokit依存関係をインストールし、共有された.githubリポジトリからrelease-notes.jsスクリプトをダウンロードして、リポジトリのGITHUB_TOKENを使って実行します。

name: Custom Release Draft

on:
  workflow_call:
    inputs:
      target_branch:
        required: false
        type: string
        default: master
  push:
    branches:
      - master
      - feat/release-drafter
  workflow_dispatch:

jobs:
  release-draft:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout target repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install dependencies
        run: npm install @octokit/rest @octokit/graphql

      - name: Download release-notes.js
        run: |
          set -e
          mkdir -p .github/scripts
          echo "Trying to download release-notes.js from feat/release-drafter..."
          if ! curl -fsSL "https://raw.githubusercontent.com/Adamant-im/.github/feat/release-drafter/.github/scripts/release-notes.js" -o .github/scripts/release-notes.js; then
            echo "feat/release-drafter not found, downloading from master..."
            curl -fsSL "https://raw.githubusercontent.com/Adamant-im/.github/master/.github/scripts/release-notes.js" -o .github/scripts/release-notes.js
          fi

      - name: Run release notes script
        run: node .github/scripts/release-notes.js
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITHUB_REPOSITORY: ${{ github.repository }}

ワークフローの設定後は、推奨される規約に従ってPRにラベルを付けるか、タイトルに接頭辞を付けてください。各PRのマージごとに、リポジトリのリリースタブにあるドラフトリリースが自動的に更新されます。

出力例

Discussion screenshot 1

Discussion screenshot 2