【実務・中級編】Bitbucketのブランチ比較APIを活用した「リリースノート自動生成ツール」の作り方 – バージョン管理・CI/CD活用バイブル

Bitbucket APIで「リリースノート作成」の苦行を自動化せよ:CI/CDパイプラインを極める現場の知見

リリース前夜、手作業でJiraを見ながらプルリクエスト(PR)をなめ回すように確認し、Markdownをコピペして整形する……そんな「祈り」のような作業は今すぐ捨てよう。

優秀なエンジニアは、CI/CDパイプラインの最後の一歩まで自動化する。今回は、Bitbucketのブランチ比較APIを叩き、PRのタイトルを抽出して自動でリリースノートを生成するツールの構築法と、現場で開発速度を倍速にするための「Bitbucket使い倒し術」を伝授する。

—

1. なぜ「ブランチ比較API」なのか?

リリースノートの自動生成において、コミットメッセージを解析するのは下策だ。なぜなら、コミットメッセージは往々にして「fix: typo」のようなノイズで溢れているからだ。

真に価値があるのは「マージされたPRのタイトル」である。Bitbucketの `/rest/api/1.0/projects/{project}/repos/{repo}/branches/compare/changes` を叩けば、前回リリースからの差分を構造化データとして取得できる。これを使えば、クリーンで意味のあるリリースノートが数秒で生成できる。

実践:Node.jsによるリリースノート生成スクリプト

// release-note-gen.js
const axios = require(‘axios’);

// API認証とエンドポイント設定(環境変数推奨)
const API_URL = ‘https://bitbucket.org/rest/api/1.0/projects/PROJ/repos/REPO/branches/compare/changes’;
const AUTH = Buffer.from(`${process.env.BITBUCKET_USER}:${process.env.BITBUCKET_APP_PASSWORD}`).toString(‘base64’);

async function generateReleaseNotes(from, to) {
const response = await axios.get(`${API_URL}?from=${from}&to=${to}`, {
headers: { ‘Authorization’: `Basic ${AUTH}` }
});

// PRに関連するコミットからマージ情報を抽出
const prTitles = response.data.values
.filter(change => change.mergeResult) // マージコミットのみ抽出
.map(change => change.mergeResult.pullRequest.title);

console.log(`

Release Notes (${to})\n`);

prTitles.forEach(title => console.log(`- ${title}`));
}

// 実行: git tag等から動的に引数を渡す
generateReleaseNotes(‘v1.0.0’, ‘v1.1.0’);

—

2. 開発スピードを劇的に高める「現場のハック」

ツールを作るだけでなく、日常のオペレーションを洗練させなければDevOpsとは呼べない。

隠れたキーボードショートカット

Bitbucketの画面でマウスを触る時間は無駄だ。以下のショートカットを指に叩き込め。

  • `a`: アサイン(自分に割り当て)
  • `c`: コメント欄へジャンプ
  • `Shift + ?`: ショートカット一覧を即座に呼び出す(これだけは覚えろ)
  • `g + p`: プルリクエスト一覧へ遷移

絶対入れるべき「神プラグイン」と設定

ブラウザ拡張機能の [Bitbucket Enhancer](https://chrome.google.com/webstore/…) 系は必須だ。

  • PRのロード時間を爆速化: 大規模なPRでのファイルツリー表示を軽量化する設定をONにする。
  • キーボード操作の強化: PRのApproveを `a` キーで完結させる設定は、レビューの質を落とさずに速度を3倍にする。

—

3. チームで共有すべき「bitbucket-pipelines.yml」のベストプラクティス

CI/CDの設定ファイルは「複雑さの隠蔽」が鍵だ。以下の構成例をベースに、パイプラインを疎結合に保て。

bitbucket-pipelines.yml の推奨構造
definitions:
steps:

  • step: &generate-release-notes

name: Generate Release Notes
image: node:18
script:

  • npm install
  • node release-note-gen.js > RELEASE_NOTES.md
  • pipe: atlassian/bitbucket-upload-file:0.1.0

variables:
BITBUCKET_USERNAME: $BITBUCKET_USER
BITBUCKET_PASSWORD: $BITBUCKET_APP_PASSWORD
FILE: ‘RELEASE_NOTES.md’

pipelines:
branches:
release/:

  • step: generate-release-notes

ポイント:

  • `definitions` に処理を切り出すことで、パイプラインの可読性が劇的に向上する。
  • 認証情報は必ず「Repository Variables」を使用し、セキュアに管理すること。

—

4. テックリードからの提言:チームを強くするルール

ツールを入れるだけでは現場は変わらない。以下のルールをチームに強制・推奨せよ。

1. PRタイトル=リリースノートの項目: 「fix」ではなく「APIのエラーレスポンスを400から422に変更」のように、ユーザーやQAチームが読んで分かる言語でPRを書くこと。これが自動生成ツールの精度を左右する。
2. 設定のコード化(IaC): `bitbucket-pipelines.yml` を変更する際は、必ずPRを作成し、チームメンバーのレビューを通すこと。CIはプロジェクトの生命線だ。
3. タグ打ちの習慣化: リリースノート自動生成のために、`git tag` は必ずルール化して打つこと(例: `v1.0.0`)。これがないと差分比較APIが機能しない。

最後に

自動化とは「楽をする」ことではない。「人間にしかできない高度な判断(設計やコードレビュー)」に集中するための時間を捻出する行為だ。

今日からそのリリースノート生成ツールを実装し、メンバーから「手作業の苦労」という言葉を抹消せよ。それが、真に強いエンジニアチームのあり方だ。

タイトルとURLをコピーしました