エンジニアの皆さん、こんにちは。
開発現場で「プルリクエスト(PR)のレビューって、なぜこんなに疲れるんだろう」と感じたことはありませんか?
レビュアーが「これ、Lint通ってる?」「テストは全部OK?」と一つひとつ確認し、修正を指示する。この繰り返しは、人間がやるべき知的作業の質を大きく下げます。
今日お話しするのは、Bitbucketの「Code Insights」という強力な武器です。これを使えば、面倒なチェック作業をすべてロボットに任せ、PR上に「品質レポート」を直接埋め込むことができます。
これをマスターすれば、あなたのチームのレビューは「バグ探し」から「本質的な設計議論」へと劇的に進化します。さあ、一緒に自動化の深淵へ飛び込みましょう。
—
1. Code Insights とは何か?
Code Insightsは、BitbucketのPR画面に「静的解析やテストの結果を直接表示する」ための機能です。
外部ツール(SonarQubeやESLintなど)の結果をAPI経由で送り込むことで、PRの「Diff(変更差分)」の横に、まるで人間がチェックしたかのようにエラーや警告を表示させることができます。「ツールが言っているから直すべき」という事実を、レビューの場で可視化する。これが品質担保の鉄則です。
—
2. 準備するもの
- Bitbucket Workspace: 管理権限のあるもの。
- App Password: CI/CDツールからBitbucket APIを叩くための権限。
- CI環境: Bitbucket Pipelines(推奨)やJenkinsなど。
今回は、最も手軽で強力な Bitbucket Pipelines を使った「HelloWorld的実装」を紹介します。
—
3. 【実践】Lint結果をPRに報告する仕組みを作る
まずは、簡単なシェルスクリプトで「解析結果をCode Insightsに送る」最小構成を実装しましょう。
ステップ①:App Passwordの発行
Bitbucketの「個人設定」>「アプリパスワード」から、`Repositories` の `Write` 権限を持つパスワードを発行し、Pipelinesの「Repository variables」に `BITBUCKET_PASSWORD` として登録してください。
ステップ②:Pipelinesの設定
`bitbucket-pipelines.yml` を以下のように書きます。
image: python:3.9
pipelines:
default:
- step:
name: “Code Insights Report”
script:
# 1. ここで静的解析を実行(例: flake8)
- pip install flake8
- flake8 . –format=default > lint_results.txt || true
# 2. 解析結果をBitbucket APIへ送信するスクリプトを呼び出す
- python3 scripts/report_to_bitbucket.py
ステップ③:API連携の心臓部(Pythonスクリプト)
これが最も重要な部分です。`scripts/report_to_bitbucket.py` を用意します。
import requests
import os
Bitbucket APIエンドポイント
url = f”https://api.bitbucket.org/2.0/repositories/{os.environ[‘BITBUCKET_REPO_OWNER’]}/{os.environ[‘BITBUCKET_REPO_SLUG’]}/commit/{os.environ[‘BITBUCKET_COMMIT’]}/reports/lint-001″
レポート内容の定義
payload = {
“title”: “Lint Check Results”,
“details”: “flake8による静的解析レポートです。”,
“report_type”: “LINT”,
“reporter”: “My-Awesome-CI”,
“result”: “FAILED”, # もしくは PASSED
“data”: [
{“title”: “エラー数”, “type”: “NUMBER”, “value”: 10}
]
}
API送信
auth = (os.environ[‘BITBUCKET_USER’], os.environ[‘BITBUCKET_PASSWORD’])
response = requests.put(url, json=payload, auth=auth)
print(f”Status Code: {response.status_code}”)
—
4. マージを自動ブロックする(禁断の果実)
レポートを出すだけでは不十分です。「品質を満たさないコードは、物理的にマージさせない」設定が必要です。
1. Repository Settings > Branching model で `main` ブランチを保護します。
2. Branch permissions に移動します。
3. 「Check for Code Insights」 にチェックを入れます。
4. これで、Code Insightsが `FAILED` ステータスを返している限り、Bitbucketは「Merge」ボタンを無効化します。
これこそが、最強の守りです。 どんなに忙しくても、人間がミスをしても、システムがバグの混入を食い止めてくれます。
—
5. 最後に:なぜこれをやるのか
「自動化」とは、単に楽をするための手段ではありません。
「エンジニアが、より創造的で楽しい作業に集中できるようにするための環境構築」です。
テストが通ったか不安で夜も眠れない、といった悩みは今日で終わりにしましょう。Code Insightsを使いこなせば、PRには常に「健全なコード」だけが届くようになります。
まずは、小さなLintチェックからで構いません。今日、あなたのリポジトリにこの仕組みを一つ埋め込んでみてください。チームの景色が、驚くほどクリアに変わるはずですよ。
もし設定で詰まったら、いつでも聞いてくださいね。応援しています!