手動リリースノート作成からの解放:3つのGitHub Actionsで叶えた自動化

はじめに

こんにちは、フロントエンドエンジニアのraraya99です。
今回のブログは社内向けのリリースノート作りをGithub Actionsで自動化した話をまとめました🚀 🚀
弊社ではリリースごとに GitHub の「マイルストーン」(以下「Milestone」)をリリースノートとして運用してきました。
Milestone は PR(プルリクエスト)をまとめて管理でき、リリース予定の未マージ PR にも気づきやすく便利です。そのため、GitHub の正式なリリースノート機能(以下「Release」)は使わず、Milestone のみで完結させていました。


🛠 現状の問題点

下記のようにMilestone の説明欄をリリースノートとして使用するには「手作業」でPR毎に 機能作成バグフィックス といったカテゴリ別に並べ替えて貼り付けていきます。
また、同時編集ができないためSlack で「編集します!」「編集しました!」と宣言し合うなど、非効率な運用が続いていました…。

これらを解決するために3つのワークフロー を勝手に開発しました。

マイルストーン


⚙️ 運用の検討

Release+release-drafterというライブラリ で自動でドラフトリリースを組み立てられる方法も検討しました。
しかし、Release だけでは PR をまとめて管理できないためマージ漏れに気づきにくくなります。
Milestone を併用する場合、Milestone と Release の二重管理で運用が煩雑です。

そのため、今回は Milestone 運用のみを自動化 する方針に決定しました。


🚀 3 つの自動化ワークフロー

1️⃣ 「Milestone 自動作成」、2️⃣ 「PR ラベル&Assignee 自動付与」、3️⃣ 「Milestone 説明欄自動更新」

1️⃣ Milestone 自動作成

  • スケジュール:毎週木曜 10:00(JST)
  • 処理内容
    • タイトルを MM/DDリリース 形式で自動生成(2週間後のMilestoneを作成)
    • 説明欄に「手動編集エリア」と「自動更新エリア」を分けるマーカーを配置
  • メリット
    • Milestone 作成忘れゼロ
  • こだわりポイント
    • 手動追記が必要な場合を想定しマーカー上部を手動編集エリアとして確保

Milestone作成


2️⃣ PR ラベル&Assignee 自動付与

  • 背景:3️⃣ Milestone 説明欄自動更新で「カテゴリ別」「チーム別」に振り分けるには、PR にラベル付けが必須なため作成
  • トリガー:PR 作成・更新時
  • 処理内容
    • ブランチ名のプレフィックスから「feature」「bug」「hotfix」「silent」などを判定しラベル付与
    • feature/silentbug/silent など複数プレフィックスの場合は両方のラベルを付与
    • PR 作成者の所属チーム(team-a / team-b など)を判定しラベル付与(所属チーム関係ないPRの場合はラベルを外したらOK)
    • PR 作成者を Assignee に自動設定(ついでに)
  • メリット
    • 自動分類の精度向上
  • こだわりポイント
    • 運用の変更点を最小にするようにした。ブランチ名に“サイレントリリース” 用の silent 付与の運用だけ追加になるが、リリースノートを手動で分類する手間に比べたら微々たるもの

ラベル付与


3️⃣ Milestone 説明欄自動更新

  • スケジュール:毎平日 9:00(JST)+ 手動トリガー
  • 処理内容
    1. Open & MM/DDリリース タイトル、かつ“14日以内” の Milestone を対象
    2. 既存説明から手動編集エリアを保持
    3. PR 情報を取得し、
      • カテゴリ(✨機能作成/🐛バグフィックス/🚨ホットフィックス/♻️リファクタリング/📌その他/🔇サイレント…)
      • チームラベル
        の順にソート&グルーピングした Markdown を完全生成
  • メリット
    • 手動 Markdown 組み立て不要(リンクを貼るのが一番めんどう)
    • PR の増減を自動キャッチアップ
    • 朝イチで“カテゴリ・チーム別”に整ったリリースノートが完成
  • こだわりポイント
    • カテゴリ毎に並びかえするだけでなく、チーム毎にソートさせ見やすさにもこだわった
    • 基本的には手動での記載はしない想定だが、どうしても手動で記載したいケースがあるときに記載できるよう手動編集エリアを設けた

Milestone


おわりに

今後も非効率な業務をガンガン潰していきたいと思います。
今回は社内用のリリースノートを自動で作成するようにしましたが、社外向けのアップデート情報 も自動化を進めていきたいと考えています。

ひとまず、下書きはさくっとできそうです。
今回作成した社内用のリリースノートから情報を取捨選択し、トンマナ調整をすれば良さそう。
(AIチームよろしくおねがいします✨)