Bitbucket パイプラインは、パブリックにアクセス可能なコンテナー レジストリでホストされている限り、ビルド中に実行するための ssh クライアント セットアップを含む、作成した Docker イメージを使用できます。
Docker イメージを作成します。
どこかで入手できる ssh キーを使用してDocker イメージを作成します。イメージには、コンテナーを実行するユーザーで保存された環境のホスト キーも必要です。これは通常はユーザーですが、 にコマンドroot
がある場合は異なる場合があります。USER
Dockerfile
すでに設定されているknown-hosts
ファイルをコピーするか、イメージのビルド時にファイルを動的に構成できます。
RUN ssh-keyscan your.staging-host.com
画像を公開する
公開されているが非公開のレジストリにイメージを公開します。独自のものをホストすることも、 Docker Hubなどのサービスを使用することもできます。
パイプラインの構成
Docker イメージでビルドするようにパイプラインを構成します。
Docker Hub を利用する場合
image:
name: account-name/java:8u66
username: $USERNAME
password: $PASSWORD
email: $EMAIL
または独自の外部レジストリ
name: docker.your-company-name.com/account-name/java:8u66
ホストでのアクセスを制限する
世界中を飛び回るホストにアクセスするための ssh キーを持ちたくないので、これらの deploy ssh キーへのアクセスをdeploy コマンドの実行のみに制限します。
authorized_keys
ステージング ホスト上のファイル:
command="/path/to/your/deploy-script",no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-dss AAAAC8ghi9ldw== deploy@bitbucket
残念ながら、bitbucketは パイプラインに共有インフラストラクチャを使用しているため、アクセスを制限するための IP リストを公開していません。それらが AWS で実行されている場合、Amazon はIP リストを公開します。
from="10.5.0.1",command="",no-... etc
また、それらに日付を付け、時々期限切れにすることを忘れないでください。ssh キーが日付を強制しないことは知っていますが、とにかく実行することをお勧めします。