【実務・中級編】Bitbucketのカスタム「パイプ」を自作してチーム内のCI/CD設定を共通化する方法 – バージョン管理・CI/CD活用バイブル

CI/CDの「負債」をコードで撲滅せよ:Bitbucket Pipesで実現する開発体験の極限化

CI/CDパイプラインの設定ファイル(`bitbucket-pipelines.yml`)が、気づけば数百行のスパゲッティコードになっていないだろうか? チームが増え、マイクロサービスが増えるたびに、誰かがコピペした古いデプロイ手順が継承され、脆弱性が放置される……。

これは「CI/CDの負債」だ。

今日は、Bitbucket Pipesを自作し、各プロジェクトのパイプラインを「たったの数行」にまで圧縮する、テックリード必携の最適化術を伝授する。これは単なる効率化ではない。「DevOpsの標準化」を強制する最強のガバナンス戦略だ。

—

1. Bitbucket Pipesの正体:コンテナによる抽象化

Bitbucket Pipesは、Dockerイメージでラップされた「再利用可能なCI/CDタスク」だ。内部的には、指定されたDockerコンテナを起動し、環境変数を注入してスクリプトを実行するだけのシンプルな仕組みだが、この「抽象化」こそが重要だ。

プロジェクトごとにシェルスクリプトをベタ書きするのは今すぐやめよう。それは保守性を捨てる行為だ。

2. 自作Pipe:現場を救う「共通デプロイ用Pipe」の作り方

まずは、自社専用のプライベートPipeを作成する。構造は極めてシンプルだ。

ディレクトリ構成:

my-custom-pipe/
├── pipe.yml # メタデータ定義
└── pipe.sh # 実行ロジック

pipe.yml (定義ファイル):

name: my-company-deploy
description: 社内標準のセキュリティスキャンとAWSデプロイを実行するPipe
image: my-registry/deploy-tool:latest # 必要なツール(aws-cli, trivy等)を同梱したイメージ
script: pipe.sh

pipe.sh (実行ロジック):

!/bin/bash
必須の環境変数をチェック(ここを厳格にすることでミスを防ぐ)
: “${AWS_REGION:?AWS_REGION is required}”
: “${APP_NAME:?APP_NAME is required}”

echo “🚀 Deploying $APP_NAME to $AWS_REGION…”

共通のセキュリティスキャン
trivy fs –exit-code 1 .

デプロイ処理(共通化されたロジック)
aws s3 sync ./dist s3://my-company-bucket/$APP_NAME/ –delete

echo “✅ Success!”

これを作成し、Dockerイメージとして社内レジストリにプッシュするだけで、全チームで「同じ品質のデプロイ」が保証される。

—

3. 実践:数行の「究極のpipelines.yml」

自作Pipeを導入した後のプロジェクトのリポジトリを見てほしい。

bitbucket-pipelines.yml
image: node:18

pipelines:
branches:
master:

  • step:

name: Build & Deploy
script:

  • npm install && npm run build

# ここで自作Pipeを呼び出すだけで完結する

  • pipe: my-registry/my-company-deploy@1.0.0

variables:
APP_NAME: “frontend-app”
AWS_REGION: “ap-northeast-1”

数行になった。複雑な認証処理も、セキュリティスキャンも、通知設定も、すべてPipeの中に隠蔽されている。 開発者は「ビジネスロジック」を書くことにだけ集中すればいい。

—

4. テックリードが仕込むべき「裏技」と生産性ハック

① キーボードショートカットで爆速ナビゲーション

BitbucketのUI上で「`?`」キーを押すと全ショートカットが表示されるが、特に覚えるべきはこれだ。

  • `g` → `p`: プルリクエスト一覧へ即移動
  • `g` → `f`: ファイル検索を呼び出す(これが最強)
  • `j` / `k`: リストの上下移動(マウスを触る時間を減らせ)

② 推奨プラグイン:Bitbucket Pipeline Editor

VS Codeを使っているなら、「Bitbucket Pipelines」拡張機能を絶対に入れること。YAMLのスキーマバリデーションがリアルタイムで効くため、コミットして失敗する時間をゼロにできる。

③ チーム開発のルール:`bitbucket-pipelines.yml` の変更権限

プロダクトコードはエンジニアの自由だが、パイプラインの「基盤部分」はテックリードが管理する別リポジトリに切り出し、サブモジュールやPipe経由で参照させるのが鉄則だ。これにより、「勝手にデプロイフローを書き換えて本番環境を壊す」事故を物理的に防げる。

—

結論:CI/CDは「資産」である

CI/CDパイプラインを「単なる自動化スクリプト」と考えるのは古い。それはチームのナレッジそのものだ。

Pipeを使って処理を共通化すれば、以下の恩恵が手に入る。
1. 一貫性: どのプロジェクトも同じ品質でデプロイされる。
2. 即時修正: Pipe側を修正するだけで、全プロジェクトのデプロイ手順を一瞬でアップデートできる。
3. 認知負荷の低減: 開発者がYAMLの複雑さに頭を悩ませる必要がなくなる。

さあ、今すぐプロジェクトを横断して、コピペされているスクリプトを「自作Pipe」に置き換えよう。それが、エンジニアリング組織を次のステージへと押し上げる唯一の道だ。

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