Auf dieser Seite wird beschrieben, wie Sie einen Bitbucket Server-Host mit Cloud Build verbinden. Wenn Sie eine Verbindung zu einem Bitbucket Server-Host herstellen, werden Ihre Bitbucket Server-Repositories in Cloud Build eingebunden. So können Sie Build-Trigger konfigurieren, um Repositories aus Bitbucket Server zu erstellen und Repositories aus Bitbucket Server in einem privaten Netzwerk zu erstellen.
Hinweis
Aktivieren Sie die Cloud Build API, die Secret Manager API und die Compute Engine API.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
- Halten Sie Ihren Quellcode in einem Bitbucket Server-Repository bereit.
- Sie benötigen entweder eine
Dockerfileoder eine Cloud Build-Konfigurationsdatei in Ihrem Bitbucket Server-Quell-Repository. - Wenn Sie noch keine Bitbucket Server-Instanz installiert haben, finden Sie eine Anleitung im Bitbucket Server-Installationsleitfaden.
Erforderliche IAM-Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud Build-Verbindungsadministrator (roles/cloudbuild.connectionAdmin) für Ihr Nutzerkonto zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Herstellen einer Verbindung zu Ihrem Bitbucket Server-Host 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.
Wenn Ihre Bitbucket Server-Instanz in einem privaten Netzwerk gehostet wird, finden Sie unter Repositories aus Bitbucket Server in einem privaten Netzwerk erstellen Informationen zu zusätzlichen IAM-Rollen, die zum Konfigurieren einer Hostverbindung erforderlich sind.
Persönliche Zugriffstokens erstellen
Bevor Sie eine Hostverbindung für Ihre Bitbucket Server-Instanz erstellen, müssen Sie persönliche Zugriffstokens in Bitbucket Server erstellen. Gehen Sie dazu so vor:
Melden Sie sich in Ihrer Bitbucket Server-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.
Speichern Sie Ihre Tokenwerte sicher. Sie verwenden sie, um eine Verbindung zu Ihrem Bitbucket Server-Repository herzustellen.
Verbindung zu einem Bitbucket Server-Host herstellen
Console
So verbinden Sie Ihren Bitbucket Server-Host mit Cloud Build:
Öffnen Sie in der Google Cloud Console die Seite Repositories.
Wählen Sie 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 vorhanden sein.
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 Hosts ein.
Optional: Wenn Sie die Verschlüsselungsschlüssel verwalten möchten, die zum Verschlüsseln der Zugriffstokens für Ihre Bitbucket Server-Repositories verwendet werden, rufen Sie den Bereich Verschlüsselung auf und wählen Sie einen Cloud Key Management Service-Schlüssel aus. Weitere Informationen finden Sie unter Kundenverwaltete Verschlüsselungsschlüssel für Secret Manager aktivieren.
Wählen Sie im Bereich Netzwerk eine der folgenden Optionen aus:
Öffentliches Internet: Wählen Sie diese Option aus, wenn Ihre Instanz über das öffentliche Internet zugänglich ist.
Privates Netzwerk: Wählen Sie diese Option aus, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird. Konfigurieren Sie dann Folgendes:
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,.ceroder.crt) haben. Wenn Sie dieses Feld leer lassen, verwendet Cloud Build ein Zertifikat aus dem Standardsatz von Zertifikaten.Wählen Sie unter Service Directory-Dienst den Standort für Ihren Dienst aus:
- In Projekt CURRENT_PROJECT
- In einem anderen Projekt
- Manuell eingeben
Geben Sie die folgenden Informationen ein:
Projekt: Wenn Sie In einem anderen Projekt oder Manuell eingeben ausgewählt haben, geben Sie die Projekt-ID ein oder wählen Sie sie aus dem Drop-down-Menü aus. Google Cloud
Region: In diesem Feld wird 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 Bereich 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 Server-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}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.admin"Wobei:
- PROJECT_ID ist die Google Cloud Projekt-ID.
Sie können jetzt Ihren Bitbucket Server-Host mit Cloud Build verbinden.
Führen Sie den folgenden Befehl aus, um eine Bitbucket Server-Verbindung zu erstellen:
gcloud builds connections create bitbucketserver 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 Server-Hostverbindung in Cloud Build.
- HOST_URI ist der URI Ihrer Bitbucket Server-Instanz.
- PROJECT_ID ist die 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 Server-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 Server-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 resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" bitbucket_server_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 die 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 Server-Hostverbindung in Cloud Build.
- BITBUCKET_URI ist der URI Ihrer Bitbucket Data Center-Instanz.