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.
- Der Quellcode muss sich in einem Bitbucket Cloud-Repository befinden.
- Achten Sie darauf, dass das Bitbucket Cloud-Quell-Repository entweder einen
Dockerfile
oder einen Cloud Build-Konfigurationsdatei. - Installieren Sie die Google Cloud CLI, um
gcloud
-Befehle zu verwenden.
Erforderliche IAM-Berechtigungen
Um die Berechtigungen zu erhalten, die Sie zum Herstellen einer Verbindung benötigen,
bitten Sie Ihren Administrator, Ihnen
Cloud Build-Verbindungsadministrator (cloudbuild.connectionAdmin
)
IAM-Rolle für Ihr Nutzerkonto.
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 zwei Zugriffstokens in Bitbucket Cloud:
- Admin-Zugriffstoken – zum Verbinden und Trennen einer Verbindung Repositories.
- Lesezugriff-Token – damit Cloud Build auf die Quelle zugreifen kann Code.
So erstellen Sie diese Tokens:
Melden Sie sich in Bitbucket Cloud an.
Folgen Sie der Bitbucket Cloud-Anleitung, um Zugriffstokens erstellen, die mit Ihrem Repository verknüpft sind Projekt oder Arbeitsbereich erstellen.
Erteilen Sie die folgenden Berechtigungen:
Admin-Zugriffstoken:
- Repositories: Lesen und Verwalten
- Pull-Anfragen: Lesen
- Webhooks: Lesen und Schreiben
Zugriffstoken mit Leseberechtigungen:
- Repositories: Lesen
Kopieren Sie Ihre Tokens zur Verwendung in den folgenden Verfahren.
Verbindung zu einem Bitbucket Cloud-Host herstellen
Console
Führen Sie die folgenden Schritte aus, um Cloud Build mit Ihrem Bitbucket Cloud-Host zu verbinden:
Öffnen Sie in der Cloud Console die Seite Repositories.
Sie sehen die Seite Repositories.
Wählen Sie in der Projektauswahl Ihr Google Cloud-Projekt aus.
Wählen Sie 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 die Verbindung aus.
Name: Geben Sie einen Namen für die Verbindung ein.
Wählen Sie im Abschnitt Hostdetails die Option Bitbucket Cloud als Host aus. Typ.
Workspace: Geben Sie die Workspace-ID für Ihr Bitbucket Cloud-Repository ein.
Zugriffstoken: Geben Sie das zuvor erstellte Zugriffstoken mit Administratorberechtigungen ein.
Zugriffstoken mit Leseberechtigungen: Geben Sie das zuvor erstellte Zugriffstoken mit Leseberechtigungen 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 Ihrem Google Cloud-Projekt. Führen Sie dazu die folgenden Befehle aus:
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 Administrator-Zugriffstoken.
- 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 dem Secret für das Lesezugriffstoken in Secret Manager geben möchten.
Erstellen Sie ein Webhook-Secret in Secret Manager. Führen Sie dazu den folgenden Befehl aus, wobei WEBHOOK_SECRET_NAME der Name ist, den Sie Ihrem Webhook-Secret geben möchten:
echo -n ${ex.(random-uuid)} | gcloud secrets create WEBHOOK_SECRET_NAME --data-file=-
Wenn sich nicht alle Secrets im selben Projekt befinden, gewähren Sie Zugriff auf Ihr 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 Ihres Admin-Token-Secret.
- READ_SECRET_NAME ist der Name des 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 Arbeitsbereich-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 des Admin-Token-Secrets.
- READ_SECRET_NAME ist der Name Ihres Token-Secrets mit Lesezugriff.
- WEBHOOK_SECRET_NAME ist der Name Ihres Webhook-Secrets.
Terraform
Sie können Ihren Bitbucket Cloud-Host mit Cloud Build verbinden: Terraform
Im folgenden Beispiel führt das Code-Snippet die folgenden Schritte aus:
- Konfiguriert den Terraform-Google-Anbieter.
- Erstellt ein Secret Manager-Secret zum Speichern der Bitbucket-Tokens.
- Erteilt dem Cloud Build-Dienst-Agent die erforderlichen Berechtigungen zum Zugriff auf Geheimnisse.
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 Ihrer Verbindung.
- CONNECTION_NAME ist der Name Ihrer Verbindung.
- WORKSPACE_ID ist die Arbeitsbereich-ID für Ihren Bitbucket. Cloud Repository.
Nächste Schritte
- Verbindung zu einem Bitbucket Cloud-Repository herstellen
- Build-Ergebnisse aufrufen
- Blau/Grün-Bereitstellungen in Compute Engine ausführen