こんにちは。現場で泥臭いトラブルシューティングを繰り返しながら、システムの安定稼働を追求しているエンジニアです。
今日は、Bitbucketを使っているチームが「なんとなく」使いがちなCI/CDツール「Bitbucket Pipelines」を、最強のリリース管理ツールへと昇華させる秘訣をお話しします。
多くのチームが「コードをプッシュして、デプロイされる」という自動化で満足していますが、本当にプロフェッショナルな現場が求めているのは、「今、どのバージョンのコードが、どの環境で動いているか」を一瞬で把握できる透明性です。
それを実現するのが、Bitbucket Pipelinesの隠れた名機能「Deployment Environments(デプロイ環境)」です。
—
1. なぜ「Deployment Environments」が必要なのか?
初心者のうちは、スクリプトでベタ書きのデプロイを組みがちです。しかし、開発規模が大きくなると「ステージングには誰のコードが入ってる?」「本番環境の環境変数はどこで管理してる?」という混乱が必ず起きます。
Deployment Environmentsを使うと、以下のメリットが生まれます。
- 可視化: Bitbucketの画面上で、どの環境に何がデプロイされたか一目でわかる。
- 承認フロー: 本番デプロイ時に「ボタンを押す」という人的な承認ステップを簡単に挟める。
- 変数管理の隔離: 環境ごとに安全にパスワードやAPIキーを管理できる。
これをマスターすれば、もう「本番環境に間違えてデバッグ用のコードを流した」なんて悲劇とは無縁になれますよ。
—
2. さあ、設定を始めよう:bitbucket-pipelines.yml の極意
まずは、プロジェクトのルートにある `bitbucket-pipelines.yml` に定義を記述します。ここが全ての司令塔です。
image: atlassian/default-image:latest
1. ここで環境を定義する(pipelinesのトップレベルで指定)
deployments:
staging:
- step:
name: Deploy to Staging
deployment: Staging # Bitbucket側で「Staging」として認識させる
script:
- echo “Deploying to Staging…”
- ./deploy.sh –env staging
production:
- step:
name: Deploy to Production
deployment: Production
trigger: manual # ここが重要!手動承認(ボタンを押すまで待機)にする
script:
- echo “Deploying to Production…”
- ./deploy.sh –env production
pipelines:
branches:
master:
- step: build-and-test # 共通のビルド処理などはアンカー機能でDRYに
- step:
<<: deploy-to-staging main:
- step: build-and-test
- step:
<<: deploy-to-production # 本番へのパス ここがポイント!
- `deployment: Staging` と書くだけで、BitbucketのGUI上に環境が自動生成されます。
- `trigger: manual` を指定することで、本番デプロイは「管理者がボタンを押した時だけ」実行されます。これが本番事故を防ぐ最後の砦です。
—
3. GUIで「今」を確認する
設定を反映して一度デプロイを走らせてみてください。
Bitbucketのリポジトリ画面の左メニューにある 「Deployments」 をクリックしてみましょう。
そこには、まるで魔法のように:
- Environment(環境): Staging / Production
- Status(状態): Success / Failed
- Current Version: 最後にどのコミットがデプロイされたか
が美しく並んでいるはずです。これこそが、チームの心理的安全性を支える「可視化」の正体です。
—
4. 環境ごとの変数は「Workspace Variables」で守る
「本番環境のDBパスワードをYAMLに書く」なんてことは絶対にしないでくださいね。
Bitbucketの [Repository settings] > [Pipelines] > [Deployments] へ移動してください。ここで先ほど定義した `Staging` や `Production` ごとに、専用の環境変数を登録できます。
- Secured: チェックを入れると値がマスクされ、ログにも表示されなくなります。
- Scope: 本番環境だけにこのAPIキーを使う、といった制御が可能です。
これにより、コード自体を環境に依存させず、「環境変数を差し替えるだけで動く」クリーンなデプロイパイプラインが完成します。
—
先輩エンジニアからの最後のアドバイス
CI/CDの真髄は「自動化」ではなく「信頼の構築」です。
パイプラインが緑色に光り、GUIで誰がいつデプロイしたかが可視化されている状態は、チームメンバーに「このシステムはいつでも安全にリリースできる」という自信を与えます。
まずは小さなプロジェクトで、この `Deployment Environments` を試してみてください。慣れてくると、もうこの機能なしでのデプロイは怖くてできなくなるはずです。
もし分からないことがあれば、いつでも聞いてください。あなたのパイプラインが、今日からより堅牢で美しいものになることを応援しています!