Bitbucket「セルフホストランナー」で、CI/CDの限界を突破せよ:オンプレミス・エンジニアリングの極意
こんにちは。現場の「できない」を「できる」に変えるのが仕事の、DevOpsエンジニアです。
皆さんは、Bitbucket Pipelinesを使っていてこんな壁にぶつかったことはありませんか?
「社内ネットワーク内のDBに直接アクセスしたい」「特殊な産業用ハードウェアと通信しながらテストしたい」「クラウドの無料枠ではビルド時間が足りない……」。
クラウドのランナーは手軽ですが、「ローカル環境との物理的な距離」という越えられない壁があります。その壁を打ち破るのが、今回紹介する「セルフホストランナー(Private Runner)」です。
これをマスターすれば、あなたのオンプレミスサーバーは「最強のビルドマシン」に生まれ変わります。さあ、一緒に構築していきましょう。
—
1. なぜ「セルフホストランナー」が必要なのか?
通常、Bitbucket Pipelinesはアトラシアンが提供するクラウド上のサーバーで動きます。しかし、これには明確な限界があります。
- ファイアウォールの向こう側: 開発環境や社内DBへアクセスできない。
- ハードウェア依存: USB接続の機器や、特定のNICカードが必要なビルドができない。
- 権限とセキュリティ: 公共のクラウドサーバーに社内の認証情報を置きたくない。
セルフホストランナーは、あなたの管理下にあるサーバーをBitbucketのCI/CDインフラの一部として統合する技術です。これにより、「クラウドの柔軟な管理画面」と「ローカルの物理的リーチ」の両方を手に入れることができます。
—
2. 最速セットアップ:ランナーを登録する
まずは、あなたのオンプレミスサーバー(Linux推奨)を用意してください。Dockerが動けば準備完了です。
ステップ1:Bitbucketでランナーを作成
1. Bitbucketのリポジトリ設定へ移動します。
2. 左メニューの「CI/CD」→「Runners」を選択。
3. 「Add runner」ボタンをクリックし、ランナー名とラベル(例: `on-prem-build`)を決めます。
4. 登録が完了すると、インストールコマンド(Docker runコマンド)が表示されます。
ステップ2:サーバーで実行
表示されたコマンドを、サーバーのターミナルに貼り付けるだけです。
Bitbucketから払い出されたランナー用コンテナを起動
docker run -d \
–name bitbucket-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp:/tmp \
–restart=always \
※ `-v /var/run/docker.sock:/var/run/docker.sock` は重要です。ランナーがホスト側のDockerを操作し、その中でさらにコンテナを立ち上げるために必要になります(Docker-in-Dockerの回避策)。
—
3. HelloWorld:ランナーを動かす
では、このランナーが本当に動いているか確認しましょう。`bitbucket-pipelines.yml`を以下のように書き換えてみてください。
pipelines:
default:
- step:
name: ローカル環境の疎通テスト
runs-on:
- self.hosted # ここでセルフホストランナーを指定
- on-prem-build # 先ほど決めたラベル
script:
- echo “こんにちは!オンプレミスからこんにちは。”
- ip addr # サーバーのIPを確認し、社内ネットワーク内にいることを証明
- ping -c 3 192.168.1.1 # 社内サーバーへの疎通確認
この設定をプッシュすると、Bitbucketの画面上でジョブが「Pending」から「Running」に変わります。あなたのサーバーのコンソールで `docker ps` を叩いてみてください。ビルド用のコンテナが自動的に立ち上がっているはずです。 これが成功すれば、あなたはすでに「環境の壁」を越えています。
—
4. 現場で震えるほど役立つ「運用の極意」
ただ動かすだけでは、プロとは言えません。最後に、現場で生き残るための3つの鉄則を授けます。
① ラベル(Label)によるジョブの振り分け
ランナーには複数のラベルを付けられます。`linux`, `gpu-enabled`, `secure-zone` など、用途別にラベルを管理しましょう。`runs-on` で適切なラベルを指定することで、ビルドごとに最適なサーバーを自動選択させることが可能です。
② Dockerホストのクリーンアップ(重要!)
セルフホストランナーは、放置するとビルド時に生成された古いコンテナやイメージでディスクを埋め尽くします。cronで定期的に掃除しましょう。
現場で必須のクリーンアップスクリプト
0 3 docker system prune -f –volumes
③ セキュリティは「隔離」が命
セルフホストランナーは、そのサーバーの権限でコードを動かします。ランナー専用のユーザーを作成し、Docker以外の権限を最小限に絞ってください。
—
最後に:CI/CDは「自由」のためにある
CI/CDツールは、あなたを拘束するためのものではなく、「繰り返し作業から解放し、創造的な仕事に集中させるためのパートナー」です。
セルフホストランナーを導入することで、これまで「できない」と諦めていた自動化の扉が大きく開かれます。最初は少し手間に感じるかもしれませんが、一度構築してしまえば、毎日のビルドとデプロイの苦しみから劇的に解放されますよ。
さあ、あなたのサーバーをBitbucketの翼にして、開発スピードを一段上のステージへ引き上げましょう!何か詰まったら、いつでも聞いてくださいね。応援しています。