こんにちは。現場の最前線で「いかに楽をして、最高品質のコードを届けるか」を追求しているエンジニアです。
皆さんは、プルリクエスト(PR)を送った後に「あ、セミコロン忘れた」「セキュリティ的に危ない書き方をしてるかも」と冷や汗をかいた経験はありませんか? 人間の目視によるレビューには限界があります。
今回は、Bitbucket Pipelinesを使い、コードの品質チェックを完全に自動化する方法を伝授します。これを導入すれば、「品質基準を満たさないコードは、そもそもデプロイの土俵にすら上がれない」という鉄壁のガードが完成します。
—
1. なぜ「自動品質管理」が必要なのか?
開発スピードを上げるためには、「フィードバックのループ」を極限まで短くする必要があります。
- ESLint: コードの書き方の「癖」を統一し、単純なバグを未然に防ぐ。
- SonarQube: 複雑度やセキュリティの脆弱性を検出し、コードの「負債」を可視化する。
これらをCI/CDに組み込むことで、レビューアは「インデントの修正」のような瑣末な指摘から解放され、よりクリエイティブな「設計のレビュー」に集中できるようになります。これがチームの生産性を劇的に変える第一歩です。
—
2. 設定の全体像:bitbucket-pipelines.yml
Bitbucket Pipelinesの設定は、リポジトリのルートにある `bitbucket-pipelines.yml` に記述します。まずは、ESLintとSonarQubeを統合した構成例を見てみましょう。
image: node:18 # コンテナ環境を指定
pipelines:
default:
- step:
name: 静的解析と品質チェック
caches:
- node
script:
# 1. 依存関係のインストール
- npm install
# 2. ESLintの実行(エラーがあればここでPipelineが停止する)
- npx eslint . –ext .js,.ts
# 3. SonarQubeスキャナーの実行
- pipe: sonarsource/sonarqube-scan:1.4.0
variables:
SONAR_HOST_URL: $SONAR_HOST_URL
SONAR_TOKEN: $SONAR_TOKEN
ここがポイント!
- Pipelineの停止: `npm install` や `eslint` コマンドは、失敗すると終了ステータス `1` を返します。Pipelineは終了ステータスが `0` 以外だとその時点で処理を停止するため、「汚いコードはマージできない」という強制力が働きます。
—
3. SonarQubeとの連携:現場で役立つコツ
SonarQubeを導入する際、最も重要なのは「結果をどこで見せるか」です。
1. SonarQube側でプロジェクト作成: 公式サイトでプロジェクトを作成し、`SONAR_TOKEN` を発行します。
2. Bitbucketのリポジトリ変数に登録: 「Repository settings」 > 「Pipelines」 > 「Repository variables」に `SONAR_TOKEN` と `SONAR_HOST_URL` を追加します。決して直書きしないでください! セキュリティの鉄則です。
3. PRへのフィードバック: SonarQubeの「Pull Request Decoration」設定を行うと、BitbucketのPR画面に直接「バグが1件見つかりました」といったコメントが自動投稿されます。
—
4. 初心者が陥りやすい罠と「極意」
初めて導入する際、多くの人がここでつまずきます。
- 「いきなり全部直そうとしない」: 既存のプロジェクトに導入すると、何千件ものエラーが出ます。最初は `.eslintrc` で `warn`(警告)設定から始め、徐々に `error`(エラー)へ引き締めていくのが、挫折しないコツです。
- 「キャッシュを活用せよ」: `caches: – node` を設定することで、毎回 `node_modules` をダウンロードする無駄な時間を省けます。CIの実行時間は、開発者の待ち時間です。1秒でも削りましょう。
—
5. まとめ:自動化は「エンジニアの自由」を生む
今回の設定を導入すれば、あなたのリポジトリは24時間365日、専属の厳しいレビュアーが監視している状態になります。
「コードの品質が低いからマージできない」とツールが勝手に判断してくれるおかげで、チームメンバーは無駄な揉め事から解放され、より本質的な開発に打ち込めるようになります。
「自動化できることは、すべて自動化する」
これが、一流のエンジニアが持っている共通の哲学です。まずは今日、`bitbucket-pipelines.yml` を作成するところから始めてみてください。きっと、数週間後には「これなしの生活には戻れない」と感じるはずですよ。
何か詰まったら、いつでも聞いてください。応援しています!