Auf dieser Seite wird erläutert, wie Sie eine Verbindung zu einem Bitbucket Server-Host mit Cloud Build herstellen.
Hinweise
-
Cloud Build, Secret Manager, and Compute Engine APIs aktivieren.
- Wenn Sie keine Bitbucket Server-Instanz installiert haben, finden Sie eine Anleitung in der Installationsanleitung für Bitbucket Server.
Einrichten
Bevor Sie eine Verbindung zu Ihrem Bitbucket Server-Host herstellen, müssen Sie einen API-Schlüssel anfordern, um eingehende Ereignisse von Bitbucket Server zu authentifizieren und zu akzeptieren. Darüber hinaus müssen Sie in Ihrem Google Cloud-Projekt IAM-Berechtigungen erteilen, um persönliche Zugriffstokens in Bitbucket Server zu erstellen und damit Webhooks zu erstellen und Repository-Daten abzurufen.
API-Schlüssel abrufen
Sie benötigen einen API-Schlüssel, um Ihren Host zu verbinden und eingehende Webhook-Ereignisse zu authentifizieren.
So erhalten Sie einen API-Schlüssel:
Öffnen Sie in der Google Cloud Console die Seite Anmeldedaten:
Klicken Sie auf Anmeldedaten erstellen.
Klicken Sie auf API-Schlüssel.
Es wird ein Dialogfeld mit Ihrem erstellten API-Schlüssel angezeigt. Notieren Sie sich Ihren API-Schlüssel.
Wenn Sie Ihren Schlüssel für Produktanwendungen einschränken möchten, klicken Sie auf Schlüssel einschränken, um weitere Schritte zum Schutz Ihres Schlüssels auszuführen. Klicken Sie ansonsten auf Schließen.
Informationen zum Einschränken Ihres Schlüssels finden Sie unter Einschränkungen für API-Schlüssel anwenden.
Erforderliche IAM-Berechtigungen
Weisen Sie Ihrem Nutzerkonto die Rolle Cloud Build-Bearbeiter (roles/cloudbuild.builds.editor
) und die Rolle Inhaber von Cloud Build-Integrationen (cloudbuild.integrations.owner
) zu, um Ihren Bitbucket Server-Host zu verbinden.
Informationen zum Hinzufügen der erforderlichen Rollen zu Ihrem Nutzerkonto finden Sie unter Zugriff auf Cloud Build-Ressourcen konfigurieren. Weitere Informationen zu IAM-Rollen, die mit Cloud Build verknüpft sind, finden Sie unter IAM-Rollen und -Berechtigungen.
Persönliche Zugriffstokens erstellen
Sie müssen in Bitbucket Server zwei persönliche Zugriffstokens erstellen, um die folgenden Aufgaben ausführen zu können:
- Webhooks erstellen: Erstellen Sie ein persönliches Zugriffstoken mit admin.
- Repository-Daten abrufen: Erstellen Sie ein persönliches Zugriffstoken mit Lesezugriff. Sie können optional ein Token mit Lesezugriff und Schreibzugriff erstellen.
Diese persönlichen Zugriffstokens sind die mindestens erforderlichen Berechtigungen. Möglicherweise müssen Sie nach Bedarf zusätzliche Berechtigungen in Bitbucket Server konfigurieren. Sie können beispielsweise Bitbucket Server-Konto auswählen, um nur auf einen Teil der Repositories auf Ihrer Bitbucket Server-Instanz Zugriff zu haben. So können Sie genau steuern, was in Cloud Build verfügbar ist.
Nachdem Sie Ihre persönlichen Zugriffstokens erstellt haben, speichern Sie die Tokenwerte sicher, um eine Verbindung zu Ihrem Bitbucket Server-Repository herzustellen.
Verbindung zu einem Bitbucket Server-Host herstellen
Console
So verbinden Sie Ihren Bitbucket Server-Host über die Google Cloud Console mit Cloud Build:
Öffnen Sie die Seite Repositories in der Google Cloud Console:
Wählen Sie oben auf der Seite den Tab 1. Generation aus.
Klicken Sie auf Host verbinden.
Wählen Sie Bitbucket Server aus dem Drop-down-Menü aus.
Das Steuerfeld Host verbinden wird angezeigt.
Geben Sie die folgenden Informationen ein, um Ihre Bitbucket Server-Instanz mit Cloud Build zu verbinden:
Region: Wählen Sie die Region für Ihre Verbindung aus.
Name: Geben Sie einen Namen für die Verbindung ein.
Host-URL: Ihre Host-URL Ihrer Bitbucket Server-Instanz. Beispiel:
https://bbs.example-test.com:7990
Google Cloud API-Schlüssel: Ihr API-Schlüssel zur Authentifizierung Ihrer Anmeldedaten.
CA Certificate (CA-Zertifikat): Ihr selbst signiertes Zertifikat. Ihr Zertifikat darf nicht größer als 10 KB sein und muss im PEM-Format (
.pem
,.cer
oder.crt
) vorliegen. Wenn Sie diesen Abschnitt leer lassen, werden Standardzertifikate verwendet.Nutzername: Der Nutzername Ihres Bitbucket Server-Kontos. Dieses Konto sollte Administratorzugriff auf die Repositories haben, die Sie mit Cloud Build verbinden möchten.
Lesezugriffstoken: Ihr persönliches Zugriffstoken für Ihr Bitbucket Server-Konto mit Leseberechtigungen.
Administratorzugriffstoken: Ihr persönliches Zugriffstoken für Ihr Bitbucket Server-Konto mit Administratorberechtigungen für Projekte und Repositories.
Wählen Sie unter Netzwerktyp 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.
Projekt: Wählen Sie Ihre Google Cloud-Projekt-ID aus.
Netzwerk: Wählen Sie Ihr Netzwerk aus dem Drop-down-Menü aus. Wenn Sie noch kein Netzwerk erstellt haben, finden Sie unter VPC-Netzwerke erstellen und verwalten Informationen zum Erstellen eines Netzwerks.
IP-Bereich: Geben Sie den internen IP-Bereich ein, den VMs innerhalb des zugewiesenen Bereichs eines Peering-Netzwerks zugewiesen werden können.
Sie können den Bereich mit der CIDR-Notation (Classless Inter-Domain Routing) im Format
STARTING_IP/SUBNET_PREFIX_SIZE
angeben.192.0.2.0/24
hat beispielsweise eine Präfixlänge von 24. Die ersten 24 Bit des IP-Bereichs werden als Subnetzmaske (192.0.2.0
) verwendet, während die möglichen Hostadressen von192.0.2.0
bis192.0.2.255
reichen.Der Wert der Präfixlänge darf
/29
nicht überschreiten. Wenn für den Bereich kein Wert angegeben ist, wird automatisch der Standardwert/24
zugewiesen. Wenn für die Präfixlänge kein Wert angegeben ist, werden innerhalb des Peering-VPC-Netzwerk automatisch IP-Adressen zugewiesen. Wenn für die IP-Adresse kein Wert angegeben ist, wird der IP-Adresse automatisch ein Bereich innerhalb des Peering-VPC-Netzwerk zugewiesen.
Klicken Sie auf Host verbinden.
Wenn sich Ihre Bitbucket Server-Instanz in einem Peering-Netzwerk befindet, kann die Verbindung zum Host einige Minuten dauern.
Sie werden zum Bereich Repository verbinden weitergeleitet.
Nachdem Sie eine Hostverbindung erstellt haben, werden Ihre persönlichen Zugriffstokens und Ihr Webhook-Secret sicher in Secret Manager gespeichert. Sie können Ihre Secrets auf der Seite Secret Manager ansehen und verwalten.
gcloud
Wenn Sie den Bitbucket Server-Host mithilfe von gcloud
-Befehlen mit Cloud Build verbinden möchten, müssen Sie den Befehl gcloud alpha builds enterprise-config bitbucketserver create
in Ihrem Terminal ausführen. Anders als beim Verbinden Ihres Hosts über die Google Cloud Console müssen Sie Ihre persönlichen Zugriffstokens und das Webhook-Secret manuell in Secret Manager speichern, bevor Sie den folgenden Befehl ausführen:
gcloud alpha builds enterprise-config bitbucketserver create
--name=BITBUCKET_SERVER_CONFIG_NAME \
--user-name=USERNAME \
--host-uri=HOST_URI \
--admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
--read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
--webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
--api-key=API_KEY \
--peered-network=PEERED_NETWORK \
--peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
--ssl-ca-file=SSL_CA_FILE
Wobei:
- BITBUCKET_SERVER_CONFIG_NAME ist der Name Ihrer Bitbucket Server-Konfiguration.
- USERNAME ist Ihr Bitbucket Server-Nutzername.
- HOST_URI ist der Host-URI Ihrer Bitbucket Server-Instanz.
- ADMIN_ACCESS_TOKEN_SECRET_VERSION ist der Ressourcenname Ihres in Secret Manager gespeicherten Administratorzugriffstokens. Das erwartete Format für in Secret Manager gespeicherte Secrets ist
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}
. Sie könnenlatest
als Version angeben, um die neueste Version Ihres Secrets zu verwenden. Dies gilt für jede in Secret Manager gespeicherte Ressource.
- READ_ACCESS_TOKEN_SECRET_VERSION ist der Ressourcenname Ihres Zugriffstokens, das in Secret Manager gespeichert ist.
- WEBHOOK_SECRET_SECRET_VERSION ist der Ressourcenname Ihres Webhook-Secrets, das in Secret Manager gespeichert ist.
- API_KEY ist der Google Cloud API-Schlüssel.
[Optional] PEERED_NETWORK ist das VPC-Netzwerk, mit dem Sie eine lokale Verbindung für Ihre Bitbucket Server-Instanzen herstellen möchten. Weitere Informationen finden Sie unter Repositories von Bitbucket Server in einem privaten Netzwerk erstellen.
[Optional] PEERED_NETWORK_IP_RANGE ist der interne IP-Bereich, dem VMs innerhalb des zugewiesenen Bereichs eines Peering-Netzwerks zugewiesen werden können.
SSL_CA_FILE ist der Pfad zu einer lokalen Datei, die Ihr SSL-Zertifikat enthält, das für Anfragen an Bitbucket Server verwendet werden soll. Das Zertifikat muss im PEM-Format vorliegen.
API
Verwenden Sie die folgende JSON-Vorlage, um Ihren Bitbucket Server-Host über die API mit Cloud Build zu verbinden. Anders als beim Verbinden Ihres Hosts über die Google Cloud Console müssen Sie Ihre persönlichen Zugriffstokens und Webhook-Secrets manuell in Secret Manager speichern, bevor Sie die API aufrufen:
{
"hostUri": "HOST_URI",
"username": "USERNAME",
"apiKey": "API_KEY",
"secrets": {
"adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
"readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
"webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
},
"peeredNetwork": "PEERED_NETWORK",
"peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
"sslCa": "SSL_CERTIFICATE"
}
Wobei:
- HOST_URI ist der Host-URI Ihrer Bitbucket Server-Instanz.
- USERNAME ist Ihr Bitbucket Server-Nutzername.
- API_KEY ist der Google Cloud API-Schlüssel.
ADMIN_ACCESS_TOKEN_SECRET_VERSION ist der Ressourcenname Ihres in Secret Manager gespeicherten Administratorzugriffstokens. Möglicherweise müssen Sie Ihrem Cloud Build-Dienstkonto
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com
die Rolle „Secret Manager“ zuweisen. Weitere Informationen finden Sie unter Einem Dienstkonto die Rolle „Secret Manager“ zuweisen.READ_ACCESS_TOKEN_SECRET_VERSION ist der Ressourcenname Ihres Zugriffstokens, das in Secret Manager gespeichert ist.
WEBHOOK_SECRET_SECRET_VERSION ist der Ressourcenname Ihres Webhook-Secrets, das in Secret Manager gespeichert ist.
[Optional] PEERED_NETWORK ist das VPC-Netzwerk, mit dem eine Peering-Verbindung für Ihre lokalen Bitbucket Server-Instanzen hergestellt werden soll.
Sie können den Bereich mit der CIDR-Routingschreibweise (Classless Inter-Domain Routing) im Format
STARTING_IP/SUBNET_PREFIX_SIZE
angeben.192.0.2.0/24
hat beispielsweise eine Präfixlänge von 24. Die ersten 24 Bit des IP-Bereichs werden als Subnetzmaske (192.0.2.0
) verwendet, während die möglichen Hostadressen von192.0.2.0
bis192.0.2.225
reichen.[Optional] PEERED_NETWORK_IP_RANGE ist der interne IP-Bereich, dem VMs innerhalb des zugewiesenen Bereichs eines Peering-Netzwerks zugewiesen werden können.
[Optional] SSL_CERTIFICATE ist das SSL-Zertifikat, das für Ihre lokalen Bitbucket Server-Instanzen verwendet wird.
Geben Sie den folgenden curl
-Befehl in Ihr Terminal ein:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json
Wobei:
- PROJECT_NUMBER ist die Nummer Ihres Cloud-Projekts.
- PROJECT_ID ist die ID Ihres Cloud-Projekts.
- REGION ist die Region, die Ihrer Bitbucket Server-Konfiguration zugeordnet ist.
- BITBUCKET_SERVER_CONFIG_NAME ist der Name Ihrer Bitbucket Server-Konfiguration.
Bei erfolgreicher Ausführung enthält der Antworttext eine neu erstellte Operation-Instanz.
Geben Sie den folgenden curl
-Befehl in Ihr Terminal ein:
curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Wobei:
- PROJECT_NUMBER ist die Nummer Ihres Cloud-Projekts.
- PROJECT_ID ist die ID Ihres Cloud-Projekts.
- REGION ist die Region, die Ihrer Bitbucket Server-Konfiguration zugeordnet ist.
- OPERATION_ID ist die ID der Erstellung der Bitbucket Server-Konfiguration.
Möglicherweise müssen Sie den API-Befehl GetOperation
so lange ausführen, bis die Antwort done: true
enthält. Das bedeutet, dass der Vorgang abgeschlossen ist. Wenn die Bitbucket Server-Konfiguration erfolgreich erstellt wurde, wird die Konfiguration im Feld response.value
angezeigt. Andernfalls finden Sie im Feld error
einen detaillierten Fehlerbericht.