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

Bitbucket PipesでCI/CDを「魔法」に変える——数行のコードで実現する開発の民主化

こんにちは。現場の最前線でコードとインフラの狭間を走り続けているエンジニアです。

皆さんのプロジェクトで、こんな「負の連鎖」に陥っていませんか?
「新しいプロジェクトを作るたびに、数十行の`bitbucket-pipelines.yml`をコピペして、微妙な修正でハマる…」
「セキュリティスキャンやデプロイ手順がチームごとにバラバラで、全社の標準を統一できない…」

その悩み、「Bitbucket Pipes(パイプ)」で完全に解決しましょう。今回は、CI/CDの設定を「再利用可能なブラックボックス」へと昇華させ、複雑なパイプラインを数行に削ぎ落とす、極限の自動化術を伝授します。

—

1. Bitbucket Pipesとは何か?:CI/CDの「部品化」

Bitbucket Pipesは、一言でいえば「CI/CDのためのプラグイン」です。

通常、`bitbucket-pipelines.yml`にシェルスクリプトを長々と書くと、メンテナンスが地獄になります。Pipesを使えば、特定の処理(テスト、デプロイ、通知など)をDockerコンテナに詰め込み、他のプロジェクトから「一行で呼び出す」ことが可能になります。

メリット:

  • DRY原則(Don’t Repeat Yourself): ロジックは一箇所で管理。
  • 標準化: チーム全体で同じテスト手順、同じデプロイ手順を強制できる。
  • 可読性: 複雑な処理が隠蔽され、パイプラインが驚くほどスッキリする。

—

2. 【実践】カスタムPipeを作ろう:Hello Worldを超えて

今回は「社内標準のテスト・デプロイ手順」を実行する独自のPipeを作ります。
必要なのは、DockerとBashの知識だけです。

ステップ1:ディレクトリ構成を作成

まずは専用のリポジトリを作成します。

my-custom-pipe/
├── Dockerfile # コンテナの定義
├── pipe.sh # 実行ロジック
└── pipe.yml # メタデータ(必須!)

ステップ2:実行ロジック (pipe.sh)

ここで、実際の処理を書きます。変数は環境変数として受け取れます。

!/bin/bash
pipe.sh
echo “🚀 チーム標準のパイプラインを開始します…”

チーム標準のテストを実行
echo “🧪 テストを実行中…”
npm test || { echo “テスト失敗!”; exit 1; }

デプロイ処理
echo “📦 サーバーへデプロイ中…”
echo “ターゲット環境: $TARGET_ENV”
ここにデプロイ用の独自スクリプトを記述

echo “✅ 全てのタスクが完了しました!”

ステップ3:定義ファイル (pipe.yml)

BitbucketがこのPipeをどう扱うかを定義します。

pipe.yml
name: my-company-deploy
description: 社内標準のテストとデプロイを実行するPipe
image: node:18-alpine # 必要な実行環境を指定
script: pipe.sh

ステップ4:Dockerfile

FROM node:18-alpine
COPY pipe.sh /usr/local/bin/pipe.sh
RUN chmod +x /usr/local/bin/pipe.sh
ENTRYPOINT [“/usr/local/bin/pipe.sh”]

—

3. 作成したPipeを公開・利用する

作成したディレクトリをGitリポジトリとしてBitbucketにプッシュします。
その後、利用したいプロジェクトの`bitbucket-pipelines.yml`を以下のように書き換えるだけです。

導入前(地獄のコピペ)

script:

  • npm install
  • npm test
  • ./deploy_script.sh
  • curl -X POST https://slack.com/… # 通知処理など延々と続く…

導入後(神の領域)

pipelines:
default:

  • step:

name: チーム標準のCI/CD実行
image: node:18-alpine
pipes:

  • pipe: bitbucket.org/your-workspace/my-custom-pipe:1.0.0

variables:
TARGET_ENV: “production”

たったこれだけです。プロジェクトのメンバーは、内部で何が起きているかを気にする必要はありません。ただ「標準を呼び出す」だけで、常に最新のデプロイ手順が保証されるのです。

—

4. 現場で震えるための極意

最後に、この手法を運用する上での「現場の知恵」を授けます。

1. バージョン管理の徹底:
Pipeのタグ(`:1.0.0`など)を必ず使いましょう。最新版(`latest`)に依存すると、ある日突然全プロジェクトのデプロイが壊れるリスクがあります。
2. キャッシュの活用:
Pipe内で`npm install`などを行う場合、Bitbucketのキャッシュ機能を活用する設計にしてください。ビルド時間が数分短縮されます。
3. エラーハンドリング:
`pipe.sh`の最後は必ず `exit 0` か `exit 1` で明示的に終了させましょう。これが不完全だと、失敗しているのにパイプラインが「成功」と判定される事故が起きます。

—

最後に

パイプラインを「書く」作業から、「選んで使う」作業に変えること。これがDevOpsの究極形です。
最初は面倒に感じるかもしれませんが、一度この仕組みを作れば、チームの生産性は劇的に向上し、あなたは「CI/CDの苦しみ」から解放されます。

さあ、あなたのチームの「標準」を、この一行に込めてみませんか?応援しています!

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