このページでは、Bitbucket Cloud ホストを Cloud Build に接続する方法について説明します。
始める前に
-
Cloud Build, Secret Manager, and Compute Engine API を有効にします。
- ソースコードが Bitbucket Cloud リポジトリにあることを確認する
- Bitbucket Cloud Source リポジトリに
Dockerfile
または Cloud Build 構成ファイルがあることを確認します。 - Google Cloud CLI をインストールして
gcloud
コマンドを使用します。
必要な IAM 権限
接続に必要な権限を取得するには、ユーザー アカウントに対する Cloud Build 接続管理者(cloudbuild.connectionAdmin
)IAM ロールを付与するように管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Bitbucket Cloud アクセス トークンを作成する
Bitbucket Cloud に次の 2 つのアクセス トークンを作成します。
- 管理者アクセス トークン - リポジトリの接続と切断に使用します。
- 読み取りアクセス トークン - Cloud Build にソースコードへのアクセスを許可します。
これらのトークンを作成する手順は次のとおりです。
Bitbucket Cloud にログインします。
Bitbucket Cloud の手順に従って、リポジトリ、プロジェクト またはワークスペースにリンクするアクセス トークンを作成します。
次の権限を付与します。
管理者アクセス トークン:
- リポジトリ: 読み取りと管理者
- pull リクエスト: 読み取り
- Webhook: 読み取り と 書き込み
読み取りアクセス トークン:
- リポジトリ: 読み取り
次の手順で使用するためにトークンをコピーします。
Bitbucket Cloud ホストに接続する
コンソール
次の手順で、Cloud Build を Bitbucket Cloud ホストに接続します。
Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリ] ページが表示されます。
プロジェクト セレクタで、Google Cloud プロジェクトを選択します。
ページ上部の [第 2 世代] タブを選択します。
[ホスト接続の作成] をクリックして、新しいホストを Cloud Build に接続します。
ソース プロバイダとして Bitbucket を選択します。
[接続の構成] セクションで、次の情報を入力します。
[リージョン]: 接続のリージョンを選択します。
[名前]: 接続の名前を入力します。
[ホストの詳細] セクションで、ホストタイプとして [Bitbucket Cloud] を選択します。
ワークスペース: Bitbucket Cloud リポジトリのワークスペース ID を入力します。
アクセス トークン: 以前に作成した管理者アクセス トークンを入力します。
読み取りアクセス トークン: 以前に作成した読み取りアクセス トークンを入力します。
[Connect] をクリックします。
新しい接続が [リポジトリ] ページに表示されます。
gcloud
認証情報を保存するには、次の手順を行います。
次のコマンドを実行して、Google Cloud プロジェクトの Secret Manager にアクセス トークンを保存します。
echo -n ADMIN_TOKEN | gcloud secrets create ADMIN_SECRET_NAME --data-file=- echo -n READ_TOKEN | gcloud secrets create READ_SECRET_NAME --data-file=-
ここで
- ADMIN_TOKEN は、管理者アクセス トークンです。
- ADMIN_SECRET_NAME は、Secret Manager で管理者アクセス トークンのシークレットに付ける名前です。
- READ_TOKEN は、読み取りアクセス トークンです。
- READ_SECRET_NAME は、Secret Manager で読み取りアクセス トークンのシークレットに付ける名前です。
次のコマンドを実行して、Secret Manager で Webhook シークレットを作成します。ここで、WEBHOOK_SECRET_NAME は Webhook シークレットに付ける名前です。
echo -n ${ex.(random-uuid)} | gcloud secrets create WEBHOOK_SECRET_NAME --data-file=-
Secret がすべて同じプロジェクト内にない場合は、次のコマンドを実行して Cloud Build サービス アカウントへのアクセスを許可します。
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_ACCOUNT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud secrets add-iam-policy-binding ADMIN_SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \ --role="roles/secretmanager.secretAccessor" gcloud secrets add-iam-policy-binding READ_SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \ --role="roles/secretmanager.secretAccessor" gcloud secrets add-iam-policy-binding WEBHOOK_SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \ --role="roles/secretmanager.secretAccessor"
ここで
- PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
- ADMIN_SECRET_NAME は、管理トークン シークレットの名前です。
- READ_SECRET_NAME は、読み取りトークンのシークレットの名前です。
- WEBHOOK_SECRET_NAME は、Webhook シークレットの名前です。
次のコマンドを使用して、Cloud Build を Bitbucket Cloud ホストに接続します。
gcloud builds connections create bitbucket-cloud CONNECTION_NAME \ --workspace=WORKSPACE_ID \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_SECRET_NAME/versions/latest \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/latest \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/1
ここで
- CONNECTION_NAME は、Bitbucket Cloud ホストへの接続に付ける名前です。
- WORKSPACE_ID は、Bitbucket Cloud リポジトリのワークスペース ID です。
- PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
- REGION は、ホスト接続のリージョンです。
- ADMIN_SECRET_NAME は、管理トークン シークレットの名前です。
- READ_SECRET_NAME は、読み取りアクセス トークンのシークレットの名前です。
- WEBHOOK_SECRET_NAME は、Webhook シークレットの名前です。
次のステップ
- Bitbucket Cloud リポジトリに接続する方法を学習する。
- ビルド結果を表示する方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。