Bitbucketの「プロジェクト変数」でCI/CDを極める:マルチテナント運用の最適解
こんにちは。日々、コードの海を航海するエンジニアの皆さん。
マイクロサービス化が進む現代の開発現場では、リポジトリの数が爆発的に増えがちです。そんな時、「全リポジトリに同じ環境変数をコピペして設定する」という地獄のような作業に時間を奪われていませんか?
今日は、Bitbucketの「プロジェクトレベル変数」を使いこなし、CI/CDパイプラインを劇的にスマートにする技術を伝授します。これをマスターすれば、設定変更のたびに何十ものリポジトリを渡り歩く苦労から解放されますよ。
—
1. なぜ「プロジェクト変数」なのか?
通常、BitbucketのCI/CD(Bitbucket Pipelines)の設定は各リポジトリ内で行います。しかし、数十のリポジトリが関わるプロジェクトで、共通の認証情報やデプロイ先エンドポイントを一つずつ更新するのは、ヒューマンエラーの温床です。
プロジェクトレベル変数を使えば、以下のメリットが得られます。
- 一元管理: 設定変更はプロジェクト設定の一箇所だけで完結。
- 権限分離: リポジトリへのアクセス権を絞りつつ、デプロイ設定だけを共有可能。
- DRY(Don’t Repeat Yourself)原則の徹底: 設定の重複を極限まで排除。
—
2. 基礎セットアップ:プロジェクト変数の定義
まずは、魔法の場所へ移動しましょう。
1. Bitbucketの左サイドバーから「プロジェクト」を選択。
2. 対象のプロジェクトを開き、左下の「プロジェクト設定」をクリック。
3. メニュー内の「デプロイメント」または「パイプライン変数」(※プランやUIバージョンにより場所が異なりますが、基本はプロジェクト設定内です)を選択。
4. ここで共通変数を定義します。
設定例:
- `PROD_API_ENDPOINT`: `https://api.production.example.com`
- `AWS_REGION`: `ap-northeast-1`
- `DEPLOY_ROLE_ARN`: `arn:aws:iam::1234567890:role/DeploymentRole`
これらは、このプロジェクト配下にある全てのリポジトリから自動的に参照可能になります。
—
3. HelloWorld:パイプラインからの呼び出し方
プロジェクト変数をどう使うか。実は、特別な設定は不要です。`bitbucket-pipelines.yml` で普通に環境変数として呼ぶだけ。これだけで、リポジトリ側は「どこから来ようが、この値を参照する」という状態になります。
サンプル: bitbucket-pipelines.yml
image: python:3.9
pipelines:
default:
- step:
name: Build and Deploy
script:
# プロジェクト変数は自動的に環境変数として注入されます
- echo “デプロイ先エンドポイント: $PROD_API_ENDPOINT”
- echo “AWSリージョン: $AWS_REGION”
# 実際にデプロイするコマンド(例)
- ./deploy.sh –target $PROD_API_ENDPOINT –region $AWS_REGION
ポイント:
`$PROD_API_ENDPOINT` と書くだけで、プロジェクトに定義した値が注入されます。リポジトリ固有の変数が必要な場合は、リポジトリごとの設定画面で定義すれば、「プロジェクト変数 + リポジトリ変数」の優先順位で解決されます。
—
4. 現場で震えるほど役立つ運用ハック
単に変数を使うだけでは、「ただの便利ツール」で終わります。DevOpsスペシャリストとして、もう一歩踏み込んだ運用術を伝授します。
ハック①:ステージングと本番の切り替え
プロジェクト変数に `ENV` というフラグを混ぜるのではなく、デプロイメント環境(Deployment Environments)機能を併用してください。
Bitbucketには「テスト」「ステージング」「本番」という環境の概念があります。プロジェクト設定で各環境ごとに変数を上書き定義しておけば、パイプラインのコードを一切変更することなく、デプロイ先を切り替えられます。
ハック②:機密情報の保護
パスワードやAPIキーは、必ず「Secured(保護)」にチェックを入れてください。一度保存すると二度と値は表示されず、パイプラインのログにもマスキングされます。これが「安全なCI/CD」の最低ラインです。
—
まとめ:あなたの時間を創造的な作業へ
プロジェクトレベル変数を活用するだけで、リポジトリが10個あろうが100個あろうが、デプロイ先や認証情報の管理コストはゼロになります。
- リポジトリの乱立に疲弊しているなら、プロジェクトに集約する。
- 手動設定のミスを防ぎたいなら、中央集権管理へ移行する。
これが、持続可能なチーム開発の第一歩です。さあ、今すぐプロジェクトの設定を開いて、コピペ作業を卒業しましょう。あなたのコードが、より素早く、より安全に世界へ届くことを願っています。
何か技術的な悩みがあれば、いつでも相談してください。共に最高のパイプラインを築き上げましょう!