このページでは、Bitbucket データセンター ホストを Cloud Build に接続する方法について説明します。
始める前に
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
- Bitbucket データセンター リポジトリにソースコードを用意します。
- Bitbucket データセンター ソース リポジトリに、
Dockerfile
または Cloud Build 構成ファイルを配置します。 - Bitbucket データセンターインスタンスをまだインストールしていない場合は、Bitbucket データセンターをインストールする手順をご覧ください。
このページで
gcloud
コマンドを使用するには、Google Cloud CLI をインストールします。
Bitbucket データセンター ホストに接続する
コンソール
Google Cloud コンソールを使用して Bitbucket データセンター ホストを Cloud Build に接続するには:
Google Cloud コンソールで [リポジトリ] ページを開きます。
ページ上部の [第 1 世代] タブを選択します。
[ホストに接続] をクリックします。
プルダウン メニューから [Bitbucket データセンター] を選択します。
[リポジトリを接続] パネルが表示されます。
次の情報を入力して、Bitbucket データセンター インスタンスを Cloud Build に接続します。
リージョン: 接続のリージョンを選択します。
[名前]: 接続の名前を入力します。
ホスト URL: Bitbucket データセンター インスタンスのホスト URL。例:
https://bbs.example-test.com:7990
Google Cloud API キー: 認証情報の認証に使用する API キーを入力します。
CA 証明書: 自己署名証明書。証明書のサイズは 10 KB 以下の PEM 形式(
.pem
、.cer
、または.crt
)にする必要があります。このセクションを空白のままにすると、Google Cloud はデフォルトの証明書セットの証明書を使用します。ユーザー名: Bitbucket データセンター アカウントのユーザー名。このアカウントには、Cloud Build に接続するリポジトリに対する管理者権限が必要です。
読み取りアクセス トークン: 読み取り権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークンを入力します。
管理者アクセス トークン: プロジェクトとリポジトリに対する管理者権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークンを入力します。
[ネットワークの種類] で、次のいずれかのオプションを選択します。
公共のインターネット: 公共のインターネットを使用してインスタンスにアクセスできる場合は、このオプションを選択します。
プライベート ネットワーク: インスタンスがプライベート ネットワークでホストされている場合は、このオプションを選択します。
プロジェクト: Google Cloud プロジェクト ID を選択します。
ネットワーク: プルダウン メニューからネットワークを選択します。ネットワークを作成していない場合は、VPC ネットワークを作成して管理するでネットワークの作成方法を確認してください。
[IP 範囲]: ピアリングされたネットワークの割り当て範囲内で VM を割り当てることができる内部 IP 範囲を入力します。
STARTING_IP/SUBNET_PREFIX_SIZE
形式のクラスレス ドメイン間ルーティング(CIDR)ルーティング表記を使用して範囲を指定できます。たとえば、192.0.2.0/24
の接頭辞の長さは 24 です。IP 範囲の最初の 24 ビットがサブネット マスク(192.0.2.0
)として使用されますが、使用可能なホストアドレスの範囲は192.0.2.0
から192.0.2.255
です。注: 接頭辞長の値は
/29
以下にする必要があります。範囲に値が指定されていない場合は、デフォルト値の/24
が自動的に割り当てられます。接頭辞長に値が指定されていない場合、ピアリングされた VPC ネットワーク内で IP アドレスが自動的に割り当てられます。IP アドレスに値が指定されていない場合、ピアリングされた VPC ネットワーク内の範囲が IP アドレスに自動的に割り振られます。
[ホストに接続] をクリックします。
Bitbucket データセンター インスタンスがピアリングされたネットワーク上にある場合、ホストの接続に数分かかることがあります。
[リポジトリを接続] パネルにリダイレクトされます。
ホスト接続を作成すると、個人用のアクセス トークンと Webhook シークレットは、Secret Manager に安全に保存されます。シークレットは、Secret Manager ページで確認および管理できます。
gcloud
gcloud
コマンドを使用して Bitbucket データセンター ホストを Cloud Build に接続するには、ターミナルで「gcloud alpha builds enterprise-config bitbucketserver create
」コマンドを実行する必要があります。Google Cloud コンソールを使用してホストを接続する場合とは異なり、個人用のアクセス トークンと Webhook シークレットを Secret Manager に手動で保存した後、次のコマンドを実行する必要があります。
gcloud alpha builds enterprise-config bitbucketserver create
--name=BITBUCKET_DATA_CENTER_CONFIG_NAME \
--user-name=USERNAME \
--host-uri=HOST_URI \
--admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
--read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
--webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
--api-key=API_KEY \
--peered-network=PEERED_NETWORK \
--peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
--ssl-ca-file=SSL_CA_FILE
ここで
- BITBUCKET_DATA_CENTER_CONFIG_NAME は、Bitbucket データセンターの構成の名前です。
- USERNAME は、Bitbucket データセンターのユーザー名です。
- HOST_URI は、Bitbucket データセンター インスタンスのホスト URI です。
- ADMIN_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された管理者アクセス トークンのリソース名です。Secret Manager に保存されているシークレットの想定される形式は、
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}
です。シークレットの最新バージョンを使用するには、バージョンとしてlatest
を指定できます。これは、Secret Manager に保存されている各リソースに適用されます。
- READ_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された読み取りアクセス トークンのリソース名です。
- WEBHOOK_SECRET_SECRET_VERSION は、Secret Manager に保存された Webhook シークレットのリソース名です。
- API_KEY は Google Cloud API キーです。
省略可: PEERED_NETWORK は、オンプレミスで Bitbucket Data Center インスタンスに接続する VPC ネットワークです。詳細については、プライベート ネットワーク内の Bitbucket データセンターからリポジトリをビルドするをご覧ください。
省略可: PEERED_NETWORK_IP_RANGE は、ピアリングされたネットワークの割り当て範囲内で VM を割り当てることができる内部 IP 範囲です。
SSL_CA_FILE は、Bitbucket データセンターへのリクエストに使用する SSL 証明書を含むローカル ファイルへのパスです。証明書は PEM 形式にする必要があります。
API
API を使用して Bitbucket データセンター ホストを Cloud Build に接続するには、次の JSON テンプレートを使用します。Google Cloud コンソールを使用してホストを接続する場合とは異なり、API を呼び出す前に、個人用のアクセス トークンと Webhook シークレットを Secret Manager に手動で保存する必要があります。
{
"hostUri": "HOST_URI",
"username": "USERNAME",
"apiKey": "API_KEY",
"secrets": {
"adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
"readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
"webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
},
"peeredNetwork": "PEERED_NETWORK",
"peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
"sslCa": "SSL_CERTIFICATE"
}
ここで
- HOST_URI は、Bitbucket データセンター インスタンスのホスト URI です。
- USERNAME は、Bitbucket データセンターのユーザー名です。
- API_KEY は Google Cloud API キーです。
ADMIN_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された管理者アクセス トークンのリソース名です。Cloud Build サービス エージェント
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com
に Secret Manager のシークレット アクセサーのロールを付与する必要がある場合があります。詳しくは、サービス アカウントに Secret Manager のロールを付与するをご覧ください。READ_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された読み取りアクセス トークンのリソース名です。
WEBHOOK_SECRET_SECRET_VERSION は、Secret Manager に保存された Webhook シークレットのリソース名です。
省略可: PEERED_NETWORK は、オンプレミスで Bitbucket Data Center インスタンスにピアリングする VPC ネットワークです。
STARTING_IP/SUBNET_PREFIX_SIZE
形式のクラスレス ドメイン間ルーティング(CIDR)ルーティング表記を使用して範囲を指定できます。たとえば、192.0.2.0/24
の接頭辞長は 24 です。IP 範囲の最初の 24 ビットがサブネット マスク(192.0.2.0
)として使用されますが、使用可能なホストアドレスの範囲は192.0.2.0
から192.0.2.225
です。省略可: PEERED_NETWORK_IP_RANGE は、ピアリングされたネットワークの割り当て範囲内で VM を割り当てることができる内部 IP 範囲です。
省略可: SSL_CERTIFICATE は、オンプレミスの Bitbucket データセンター インスタンスに使用される SSL 証明書です。
ターミナルで、次の curl
コマンドを入力します。
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json
ここで
- PROJECT_ID は、ユーザーの Google Cloud プロジェクト ID です。
- REGION は、Bitbucket データセンターの構成に関連付けられたリージョンです。
- BITBUCKET_DATA_CENTER_CONFIG_NAME は、Bitbucket データセンターの構成の名前です。
成功すると、レスポンスの本文には新しく作成された Operation のインスタンスが含まれます。
ターミナルで、次の curl
コマンドを入力します。
curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
ここで
- PROJECT_NUMBER は Google Cloud プロジェクト番号です。
- PROJECT_ID は、ユーザーの Google Cloud プロジェクト ID です。
- REGION は、Bitbucket データセンターの構成に関連付けられたリージョンです。
- OPERATION_ID は、Bitbucket データセンターの構成作成オペレーションの ID です。
オペレーションが完了したことを示す done: true
がレスポンスに含まれるまで、GetOperation API コマンドを実行したままにする必要が生じる場合があります。Bitbucket データセンターの構成が正常に作成された場合は、response.value
フィールドでその構成を確認できます。正常に作成されなかった場合は、error
フィールドで詳細なエラーレポートを確認してください。
次のステップ
- Bitbucket データセンター リポジトリに接続する方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。