Auf dieser Seite wird erläutert, wie Sie einen Bitbucket Cloud-Host mit Cloud Build verbinden.
Hinweise
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
- Prüfen Sie, ob sich der Quellcode in einem Bitbucket Cloud-Repository befindet.
- Achten Sie darauf, dass das Bitbucket Cloud-Quell-Repository entweder eine
Dockerfile
oder eine Cloud Build-Konfigurationsdatei enthält. - Installieren Sie die Google Cloud CLI, um
gcloud
-Befehle zu verwenden.
Erforderliche IAM-Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Cloud Build-Verbindungsadministrator“ (cloudbuild.connectionAdmin
) für Ihr Nutzerkonto zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Herstellen einer Verbindung benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Bitbucket Cloud-Zugriffstokens erstellen
Erstellen Sie die folgenden beiden Zugriffstokens in Bitbucket Cloud:
- Administratorzugriffstoken zum Verbinden und Trennen von Repositories.
- Lesezugriffstoken, damit Cloud Build auf Ihren Quellcode zugreifen kann.
So erstellen Sie diese Tokens:
Melden Sie sich in Bitbucket Cloud an.
Folgen Sie der Anleitung für Bitbucket Cloud, um Zugriffstokens zu erstellen, die mit Ihrem Repository, Projekt oder Arbeitsbereich verknüpft sind.
Erteilen Sie die folgenden Berechtigungen:
Zugriffstoken mit Administratorberechtigungen:
- Repositories: Lesen und Administrator
- Pull-Anfragen: Lesen
- Webhooks: Lesen und Schreiben
Zugriffstoken mit Leseberechtigungen:
- Repositories: Lesen
Kopieren Sie Ihre Tokens für die Verwendung in den folgenden Verfahren.
Verbindung zu einem Bitbucket Cloud-Host herstellen
Console
So verbinden Sie Cloud Build mit Ihrem Bitbucket Cloud-Host:
Öffnen Sie in der Google Cloud Console die Seite Repositories.
Die Seite Repositories wird angezeigt.
Wählen Sie in der Projektauswahl Ihr Google Cloud Projekt aus.
Wähle oben auf der Seite den Tab 2. Generation aus.
Klicken Sie auf Hostverbindung erstellen, um einen neuen Host mit Cloud Build zu verbinden.
Wählen Sie Bitbucket als Quellanbieter aus.
Geben Sie im Abschnitt Verbindung konfigurieren die folgenden Informationen ein:
Region: Wählen Sie eine Region für Ihre Verbindung aus.
Name: Geben Sie einen Namen für die Verbindung ein.
Wählen Sie im Bereich Hostdetails Bitbucket Cloud als Hosttyp aus.
Workspace: Geben Sie die Workspace-ID für Ihr Bitbucket Cloud-Repository ein.
Zugriffstoken: Geben Sie das zuvor erstellte Administratorzugriffstoken ein.
Lesezugriffstoken: Geben Sie das zuvor erstellte Lesezugriffstoken ein.
Klicken Sie auf Verbinden.
Die neue Verbindung wird auf der Seite Repositories angezeigt.
gcloud
So speichern Sie Ihre Anmeldedaten:
Speichern Sie Ihre Zugriffstokens in Secret Manager in IhremGoogle Cloud -Projekt, indem Sie die folgenden Befehle ausführen:
echo -n ADMIN_TOKEN | gcloud secrets create ADMIN_SECRET_NAME --data-file=- echo -n READ_TOKEN | gcloud secrets create READ_SECRET_NAME --data-file=-
Wobei:
- ADMIN_TOKEN ist Ihr Zugriffstoken mit Administratorberechtigungen.
- ADMIN_SECRET_NAME ist der Name, den Sie dem Secret für das Administratorzugriffstoken in Secret Manager geben möchten.
- READ_TOKEN ist Ihr Token mit Lesezugriff.
- READ_SECRET_NAME ist der Name, den Sie Ihrem Secret für das Lesezugriffstoken in Secret Manager geben möchten.
Erstellen Sie ein Webhook-Secret in Secret Manager, indem Sie den folgenden Befehl ausführen. Ersetzen Sie dabei WEBHOOK_SECRET_NAME durch den Namen, den Sie Ihrem Webhook-Secret geben möchten:
echo -n ${ex.(random-uuid)} | gcloud secrets create WEBHOOK_SECRET_NAME --data-file=-
Wenn sich Ihre Secrets nicht alle im selben Projekt befinden, gewähren Sie Zugriff auf Ihren Cloud Build-Dienst-Agent, indem Sie Folgendes ausführen:
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"
Wobei:
- PROJECT_ID ist Ihre Google Cloud Projekt-ID.
- ADMIN_SECRET_NAME ist der Name des Secrets für Ihr Administrator-Token.
- READ_SECRET_NAME ist der Name Ihres Secrets für das Lesetoken.
- WEBHOOK_SECRET_NAME ist der Name Ihres Webhook-Secrets.
Verbinden Sie Cloud Build mit Ihrem Bitbucket Cloud-Host mit dem folgenden Befehl:
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
Wobei:
- CONNECTION_NAME ist der Name, den Sie der Verbindung zu Ihrem Bitbucket Cloud-Host geben möchten.
- WORKSPACE_ID ist die Workspace-ID für Ihr Bitbucket Cloud-Repository.
- PROJECT_ID ist Ihre Google Cloud Projekt-ID.
- REGION ist die Region für Ihre Hostverbindung.
- ADMIN_SECRET_NAME ist der Name Ihres Admin-Token-Secrets.
- READ_SECRET_NAME ist der Name Ihres Secrets für das Lesezugriffstoken.
- WEBHOOK_SECRET_NAME ist der Name Ihres Webhook-Secrets.
Terraform
Sie können Ihren Bitbucket Cloud-Host mit Cloud Build verbinden, indem Sie Terraform verwenden.
Im folgenden Beispiel führt das Code-Snippet Folgendes aus:
- Konfiguriert den Terraform Google-Anbieter.
- Erstellt ein Secret Manager-Secret zum Speichern der Bitbucket-Tokens.
- Gewährt dem Cloud Build-Dienst-Agent die erforderlichen Berechtigungen für den Zugriff auf Secrets.
Erstellt eine Bitbucket Cloud-Verbindung.
// Configure the Terraform Google provider terraform { required_providers { google = {} } } provider "google" { project = "PROJECT_ID" region = "REGION" } // Create secrets and grant permissions to the Cloud Build service agent resource "google_secret_manager_secret" "admin-token-secret" { project = "PROJECT_ID" secret_id = "ADMIN_TOKEN_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "admin-token-secret-version" { secret = google_secret_manager_secret.admin-token-secret.id secret_data = "ADMIN_TOKEN_VALUE" } resource "google_secret_manager_secret" "read-token-secret" { project = "PROJECT_ID" secret_id = "READ_TOKEN_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "read-token-secret-version" { secret = google_secret_manager_secret.read-token-secret.id secret_data = "READ_TOKEN_VALUE" } resource "google_secret_manager_secret" "webhook-secret-secret" { project = "PROJECT_ID" secret_id = "WEBHOOK_SECRET_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "webhook-secret-secret-version" { secret = google_secret_manager_secret.webhook-secret-secret.id secret_data = "WEBHOOK_SECRET_VALUE" } data "google_iam_policy" "p4sa-secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy-pak" { project = google_secret_manager_secret.admin-token-secret.project secret_id = google_secret_manager_secret.admin-token-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-rpak" { project = google_secret_manager_secret.read-token-secret.project secret_id = google_secret_manager_secret.read-token-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-whs" { project = google_secret_manager_secret.webhook-secret-secret.project secret_id = google_secret_manager_secret.webhook-secret-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } // Create the connection and add the repository resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" bitbucket_cloud_config { workspace = "WORKSPACE_ID" authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.admin-token-secret-version.id } read_authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.read-token-secret-version.id } webhook_secret_secret_version = google_secret_manager_secret_version.webhook-secret-secret-version.id } depends_on = [ google_secret_manager_secret_iam_policy.policy-pak, google_secret_manager_secret_iam_policy.policy-rpak, google_secret_manager_secret_iam_policy.policy-whs ] }
Wobei:
- PROJECT_ID ist Ihre Google Cloud Projekt-ID.
- PROJECT_NUMBER ist die Nummer Ihres Google Cloud Projekts.
- ADMIN_TOKEN_NAME ist der Name Ihres Tokens mit Zugriff auf die Bereiche
webhook
,repository
,repository:admin
undpullrequest
. - ADMIN_TOKEN_VALUE ist der Wert Ihres ADMIN_TOKEN_NAME.
- READ_TOKEN_NAME ist der Name Ihres Tokens mit dem Bereich
repository:read
. - READ_TOKEN_VALUE ist der Wert Ihres READ_TOKEN_NAME.
- WEBHOOK_SECRET_NAME ist der Name Ihres Webhook-Secrets.
- WEBHOOK_SECRET_VALUE ist der Wert Ihres WEBHOOK_SECRET_NAME.
- REGION ist die Region für Ihre Verbindung.
- CONNECTION_NAME ist der Name Ihrer Verbindung.
- WORKSPACE_ID ist die Workspace-ID für Ihr Bitbucket Cloud-Repository.
Nächste Schritte
- Verbindung zu einem Bitbucket Cloud-Repository herstellen
- Build-Ergebnisse aufrufen
- Blau/Grün-Bereitstellungen in Compute Engine durchführen