【入門編】Bitbucketの『プルリクエスト・デコレーター』を自作して独自の品質チェックを追加する方法 – バージョン管理・CI/CD活用バイブル

エンジニアの皆さん、こんにちは。現場で「またレビュー待ちで時間が溶けた……」と頭を抱えたことはありませんか?

CIが回って「Pass」しただけで満足してはいけません。真のDevOpsとは、「人間の判断を機械がサポートし、レビューの質を極限まで高めること」にあります。

今日は、Bitbucketの強力な武器である「プルリクエスト(PR)デコレーター」を自作し、あなたのチーム独自の品質基準を自動フィードバックする仕組みを構築する方法を伝授します。これをマスターすれば、あなたはチームの守護神になれますよ。

—

1. なぜ「PRデコレーター」を自作するのか?

標準的なLintツールだけでは「ビジネス上のルール」は守れません。「機密情報が混じっていないか?」「設計ドキュメントとコードの乖離はないか?」「特定の関数が適切にラップされているか?」といった組織独自の制約を、レビュー依頼の瞬間に自動で指摘できたらどうでしょう。

PRデコレーターとは、CIの結果をPR画面の「コメント」や「インサイト」として直接突き刺す仕組みのことです。

2. 必要な準備:Bitbucket APIの鍵を握る

まずは、CI/CD環境(Bitbucket PipelinesやJenkins等)からBitbucketを操作するための「App Password」を取得します。

1. Bitbucketの「個人設定」→「アプリパスワード」を開く。
2. 権限は `Pull Requests (Write)` を選択。
3. 発行された文字列を、CIの環境変数 `BITBUCKET_PASSWORD` に設定します。

—

3. 実践!PRデコレーターのHelloWorld

今回は最も直感的な「PRにコメントを投稿する」スクリプトを作成します。Pythonを使えば、わずか数行で独自の品質チェックが完了します。

ステップ1:解析用スクリプト (`check_quality.py`)

例えば、「特定の非推奨関数が使われていないか」をチェックする簡易スクリプトです。

import os
import requests

Bitbucket APIの基本情報
WORKSPACE = os.getenv(‘BITBUCKET_WORKSPACE’)
REPO_SLUG = os.getenv(‘BITBUCKET_REPO_SLUG’)
PR_ID = os.getenv(‘BITBUCKET_PR_ID’) # Pipelines実行時に自動付与されるID
TOKEN = os.getenv(‘BITBUCKET_PASSWORD’) # App Password

def post_comment(message):
url = f”https://api.bitbucket.org/2.0/repositories/{WORKSPACE}/{REPO_SLUG}/pullrequests/{PR_ID}/comments”
payload = {“content”: {“raw”: f”⚠️ 品質チェック警告: {message}”}}

# 認証情報を付与して投稿
response = requests.post(url, json=payload, auth=(‘YOUR_USERNAME’, TOKEN))
return response.status_code

独自のビジネスロジック:コード内に’unsafe_function’がないか確認
with open(‘src/main.py’, ‘r’) as f:
if ‘unsafe_function()’ in f.read():
post_comment(“非推奨のunsafe_function()が検出されました。削除してください!”)

ステップ2:`bitbucket-pipelines.yml` に組み込む

CIが走るたびに、このスクリプトが自動的にチェックを代行します。

pipelines:
pull-requests:
”:

  • step:

name: Custom Quality Check
image: python:3.9
script:

  • pip install requests
  • python check_quality.py # ここでデコレーション実行!

—

4. さらに上を目指す:インサイト(Insights)の活用

単なるコメントではなく、PR画面の「Insights」タブに結果を表示させると、よりプロフェッショナルな見た目になります。

Bitbucket APIの `Reports` エンドポイントを使います。

  • メリット: 「成功/失敗」のステータスを専用UIで視覚化できる。
  • 実装のコツ: レポートの `result` フィールドに `FAILED` を渡すと、CIのビルド結果と連動してPRに赤い警告を表示させることができます。

—

5. 先輩エンジニアからのアドバイス:運用を楽にする鍵

この仕組みを導入する際、以下の3点を意識してください。

1. ノイズを減らす: 完璧を求めすぎないでください。「Info」レベルの指摘はコメントせず、本当に致命的なものだけを指摘するようにフィルタリングしましょう。
2. ルールを共有する: なぜそのチェックが必要なのか、コメントにリンクを貼ってください(例:Wikiへのリンク)。これがチームの教育になります。
3. 高速化: 解析スクリプトが遅いと開発体験が損なわれます。最初は簡単な正規表現チェックから始め、徐々に精度を上げましょう。

まとめ

プルリクエスト・デコレーターを自作するということは、「チームの集合知をコードとして定着させる」ということです。

最初は「unsafeな関数を見つける」という小さな一歩で構いません。そこから「テストカバレッジの急激な低下を検知する」「ドキュメントとの整合性を保証する」といった高度な自動化へと進化させていけば、あなたのチームの開発生産性は劇的に向上します。

さあ、BitbucketのAPIを叩いて、あなただけの「最強のレビュアー」を誕生させましょう。応援していますよ!

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