このページでは、Bitbucket データセンター ホストを Cloud Build に接続する方法について説明します。
準備
-
Cloud Build, Secret Manager, and Compute Engine API を有効にします。
- Bitbucket データセンターインスタンスをまだインストールしていない場合は、Bitbucket データセンターをインストールする手順をご覧ください。
設定
Bitbucket データセンター ホストに接続する前に、Bitbucket データセンターからの受信イベントを認証して受け入れる API キーを取得する必要があります。さらに、Webhook を作成してリポジトリ データを取得するには、Google Cloud プロジェクトで IAM 権限を付与して、Bitbucket データセンターで個人用アクセス トークンを作成する必要があります。
API キーの取得
ホスト リポジトリを接続し、受信 Webhook イベントを認証するには、API キーが必要です。
API キーを取得するには:
Google Cloud Console の認証情報ページを開きます。
[認証情報を作成] をクリックします。
[API キー] をクリックします。
作成した API キーとともにダイアログが表示されます。API キーをメモします。
プロダクト アプリケーションのキーを制限する場合は、[キーを制限] をクリックして、キーを保護する追加の手順を行います。制限しない場合は、[閉じる] をクリックします。
キーを制限する方法については、API キーの制限を適用するをご覧ください。
個人用アクセス トークンの作成
次のタスクを実行するには、Bitbucket データセンターに 2 つの個人用アクセス トークンを作成する必要があります。
- Webhook の作成: 管理者アクセス権を持つ個人用のアクセス トークンを作成します。
- リポジトリ データの取得: 読み取りアクセス権を持つ個人用のアクセス トークンを作成します。必要に応じて、読み取りアクセスと書き込みアクセスの両方を持つトークンを作成できます。
これらの個人用のアクセス トークンは、必要最小限の権限です。追加の権限は、必要に応じて Bitbucket データセンターで構成できます。たとえば、Bitbucket Data Center アカウントを選択して、Bitbucket Data Center インスタンス上のリポジトリのサブセットにのみアクセスし、Cloud Build で利用できる対象を細かく制御できます。
個人用のアクセス トークンを作成したら、Bitbucket データセンター リポジトリに接続して、トークンの値を安全に保存します。
Bitbucket データセンター ホストへの接続
Console
Google Cloud コンソールを使用して Bitbucket データセンター ホストを Cloud Build に接続するには:
Google Cloud コンソールで [リポジトリの管理] ページを開きます。
[ホストに接続] をクリックします。
[リポジトリを接続] パネルが表示されます。
次の情報を入力して、Bitbucket データセンター インスタンスを Cloud Build に接続します。
- Host url: Bitbucket データセンター インスタンスのホスト URL。例:
https://bbs.example-test.com:7990
- Google Cloud API キー: 認証情報の認証に使用する API キー。
- CA 証明書: 自己署名証明書。証明書のサイズは 10 KB 以下の PEM 形式(
.pem
、.cer
、または.crt
)にする必要があります。このセクションを空白のままにすると、デフォルトの証明書のセットが使用されます。 - ユーザー名: Bitbucket データセンター アカウントのユーザー名。このアカウントには、Cloud Build に接続するリポジトリに対する管理者権限が必要です。
- 読み取りアクセス トークン: 読み取り権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークン。
- 管理者アクセス トークン: プロジェクトとリポジトリに対する管理者権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークン。
- [省略可] ネットワーク プロジェクト: オンプレミス ネットワークのネットワーク プロジェクト ID。
- [省略可] ネットワーク名: オンプレミス ネットワークのネットワーク名。
- Host url: Bitbucket データセンター インスタンスのホスト URL。例:
[ホストに接続] をクリックします。
Bitbucket データセンター インスタンスがピアリングされたネットワーク上にある場合、ホストの接続に数分かかることがあります。
[リポジトリを接続] パネルにリダイレクトされます。
ホスト接続を作成すると、個人用のアクセス トークンと Webhook シークレットは、Secret Manager に安全に保存されます。シークレットは、Secret Manager ページで確認および管理できます。
gcloud
gcloud
コマンドを使用して Bitbucket データセンター ホストを Cloud Build に接続するには、ターミナルで「gcloud alpha builds enterprise-config bitbucketserver create
」コマンドを実行する必要があります。Google Cloud Console を使用してホストを接続する場合とは異なり、個人用のアクセス トークンと 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 \
--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 ネットワークです。
- 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",
"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 ネットワークです。
[省略可] 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 は 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 は Cloud プロジェクト番号です。
- PROJECT_ID は Cloud プロジェクト ID です。
- REGION は、Bitbucket データセンターの構成に関連付けられたリージョンです。
- OPERATION_ID は、Bitbucket データセンターの構成作成オペレーションの ID です。
オペレーションが完了したことを示す done: true
がレスポンスに含まれるまで、GetOperation API コマンドを実行したままにする必要が生じる場合があります。Bitbucket データセンターの構成が正常に作成された場合は、response.value
フィールドでその構成を確認できます。正常に作成されなかった場合は、error
フィールドで詳細なエラーレポートを確認してください。
次のステップ
- Bitbucket データセンター リポジトリに接続する方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。