Auf dieser Seite wird erläutert, wie Sie einen Bitbucket Data Center-Host mit Cloud Build verbinden.
Hinweise
-
Enable the Cloud Build and Secret Manager APIs.
- Halten Sie Ihren Quellcode in einem Bitbucket Data Center-Repository bereit.
- Sie benötigen entweder eine
Dockerfile
oder eine Cloud Build-Konfigurationsdatei in Ihrem Bitbucket Data Center-Quell-Repository. - Wenn Sie keine Bitbucket Data Center-Instanz installiert haben, finden Sie eine Anleitung unter Bitbucket Data Center installieren.
Wenn Sie die
gcloud
-Befehle auf dieser Seite verwenden möchten, installieren Sie die Google Cloud CLI.
Erforderliche IAM-Berechtigungen
- Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud Build Connection Admin (
roles/cloudbuild.connectionAdmin
) für das Nutzerkonto zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verbinden Ihres Bitbucket Data Center-Hosts benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter „Zugriff verwalten“.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Wenn Ihre Bitbucket Data Center-Instanz in einem privaten Netzwerk gehostet wird, finden Sie unter Build repositories from Bitbucket Data Center in a private network Informationen zu zusätzlichen IAM-Rollen, die vor der Hostverbindung erforderlich sind.
Verbindung zu einem Bitbucket Data Center-Host herstellen
Bevor Sie eine Hostverbindung für Ihre Bitbucket Data Center-Instanz erstellen, müssen Sie persönliche Zugriffstokens in Bitbucket Data Center erstellen. Gehen Sie dazu so vor:
Melden Sie sich in Ihrer Bitbucket Data Center-Instanz an.
Folgen Sie der Anleitung, um HTTP-Zugriffstokens für Ihr Nutzerkonto zu erstellen.
Erstellen Sie ein Zugriffstoken mit dem Bereich repository admin, das zum Verbinden und Trennen von Repositories verwendet werden soll.
Erstellen Sie ein Zugriffstoken mit dem Bereich repository read, damit Cloud Build-Repositories auf Quellcode in Repositories zugreifen können.
Console
So verbinden Sie Ihren Bitbucket Data Center-Host mit Cloud Build:
Öffnen Sie in der Google Cloud Console die Seite Repositories.
Die Seite Repositories wird angezeigt.
Wähle oben auf der Seite den Tab 2. Generation aus.
Wählen Sie in der Projektauswahl in der oberen Leiste Ihr Google Cloud -Projekt aus.
Klicken Sie auf Hostverbindung erstellen, um einen neuen Host mit Cloud Build zu verbinden.
Wählen Sie im linken Bereich 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. Sie müssen eine Region angeben. Ihre Verbindung kann nicht global bestehen.
Name: Geben Sie einen Namen für die Verbindung ein.
Wählen Sie im Abschnitt Hostdetails die folgenden Informationen aus oder geben Sie sie ein:
Bitbucket-Host: Wählen Sie Bitbucket Data Center als Host aus.
Host-URL: Geben Sie die URL Ihres Bitbucket Data Center-Hosts ein.
Wählen Sie im Bereich Netzwerk eine der folgenden Optionen aus:
Öffentliches Internet: Wählen Sie diese Option aus, wenn auf Ihre Instanz über das öffentliche Internet zugegriffen werden kann.
Privates Netzwerk: Wählen Sie diese Option aus, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.
CA-Zertifikat: Ihr selbst signiertes Zertifikat. Klicken Sie auf Durchsuchen, um das Zertifikat von Ihrem lokalen Computer aus zu öffnen.
Ihr Zertifikat darf nicht größer als 10 KB sein und sollte das PEM-Format (
.pem
,.cer
oder.crt
) haben. Wenn Sie dieses Feld leer lassen, verwendet Cloud Build ein Zertifikat aus dem Standardsatz von Zertifikaten.Wählen Sie im Bereich Service Directory-Dienst den Standort Ihres Dienstes aus. Sie können die vorab ausgefüllte Projekt-ID übernehmen oder ein anderes Projekt angeben.
Wählen Sie das Projekt Ihres Dienstes aus. Sie können das vorausgefüllte Projekt akzeptieren, In einem anderen Projekt auswählen, um zu suchen, oder Manuell eingeben auswählen.
Wenn Sie diese Option auswählen, müssen Sie die folgenden Informationen eingeben:
Projekt: Geben Sie Ihre Google CloudProjekt-ID ein oder wählen Sie sie im Drop-down-Menü aus.
Region: In diesem Feld ist die Region Ihrer Verbindung vorausgewählt. Die für Ihren Dienst angegebene Region muss mit der Region übereinstimmen, die mit Ihrer Verbindung verknüpft ist.
Namespace: Wählen Sie den Namespace Ihres Dienstes aus.
Dienst: Wählen Sie den Dienstnamen in Ihrem Namespace aus.
Geben Sie im Abschnitt HTTP-Zugriffstokens die folgenden Informationen ein:
Zugriffstoken mit Administratorberechtigungen: Geben Sie das Token mit dem Zugriffsbereich repository admin ein. Dieses Token wird zum Verbinden und Trennen von Repositories verwendet.
Lesezugriffstoken: Geben Sie das Token mit dem Zugriffsbereich repository read ein. Cloud Build-Trigger verwenden dieses Token, um auf Quellcode in Repositories zuzugreifen.
Klicken Sie auf Verbinden.
Nachdem Sie auf die Schaltfläche Verbinden geklickt haben, werden Ihre persönlichen Zugriffstokens sicher in Secret Manager gespeichert. Nachdem Sie eine Verbindung zum Bitbucket Data Center-Host hergestellt haben, erstellt Cloud Build in Ihrem Namen ein Webhook-Secret. Sie können Ihre Secrets auf der Seite Secret Manager ansehen und verwalten.
gcloud
Erstellen Sie ein Webhook-Secret in Secret Manager, indem Sie den folgenden Befehl ausführen. Dabei ist WEBHOOK_SECRET der Name, den Sie Ihrem Webhook-Secret geben möchten:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET --data
-file=-Wenn Sie Ihre Secrets in einem anderen Google Cloud Projekt als dem speichern, das Sie zum Erstellen einer Hostverbindung verwenden möchten, führen Sie den folgenden Befehl aus, um Ihrem Projekt Zugriff auf den Cloud Build-Dienst-Agent zu gewähren:
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcpiam.gserviceaccount.com-sa-cloudbuild." gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ \ --rol
e="roles/secretmanager.admin"Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
Sie können jetzt Ihren Bitbucket Data Center-Host mit Cloud Build verbinden.
Führen Sie den folgenden Befehl aus, um eine Bitbucket Data Center-Verbindung zu erstellen:
gcloud builds connections create bitbucket-data-center CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSION ``` Where:
- CONNECTION_NAME ist ein Name für Ihre Bitbucket Data Center-Hostverbindung in Cloud Build.
- HOST_URI ist die URI Ihrer Bitbucket Data Center-Instanz.
- PROJECT_ID ist Ihre Google Cloud Projekt-ID.
- REGION ist die Region für Ihre Verbindung.
- ADMIN_TOKEN ist der Name Ihres Tokens mit dem Bereich repository admin.
- READ_TOKEN ist der Name Ihres Tokens mit dem Bereich repository read.
- SECRET_VERSION ist die Version Ihres Secrets.
- WEBHOOK_SECRET ist Ihr Webhook-Secret.
Terraform
Sie können Ihren Bitbucket Data Center-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 Data Center-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 siam.gserviceaccount.comecret_data = "WEBHOOK_SECRET_VALUE" } data "google_iam_policy" "p4sa-secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild."] } } 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 resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" bitbucket_data_center_config { host_uri = "BITBUCKET_URI" 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 dem Bereich
repository:admin
. - 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 ein Name für Ihre Bitbucket Data Center-Hostverbindung in Cloud Build.
- BITBUCKET_URI ist die URI Ihrer Bitbucket Data Center-Instanz.
Nächste Schritte
- Informationen zum Verbinden eines Bitbucket Data Center-Repositorys
- Blau/Grün-Bereitstellungen in Compute Engine durchführen