Verbindung zu einem Bitbucket-Serverhost herstellen

Auf dieser Seite wird erläutert, wie Sie eine Verbindung zu einem Bitbucket Server-Host in Cloud Build herstellen.

Hinweise

  • Enable the Cloud Build, Secret Manager, and Compute Engine APIs.

    Enable the APIs

Einrichten

Bevor Sie Ihren Bitbucket Server-Host verbinden, müssen Sie einen API-Schlüssel abrufen, um eingehende Ereignisse von Bitbucket Server zu authentifizieren und zu akzeptieren. Außerdem müssen Sie in Ihrem Google Cloud -Projekt IAM-Berechtigungen gewähren, um persönliche Zugriffstokens in Bitbucket Server zu erstellen, mit denen Sie Webhooks erstellen und Repository-Daten abrufen können.

API-Schlüssel abrufen

Um Ihren Host zu verbinden und eingehende Webhook-Ereignisse zu authentifizieren, benötigen Sie einen API-Schlüssel.

So erhalten Sie einen API-Schlüssel:

  1. Öffnen Sie in der Google Cloud Console die Seite Anmeldedaten:

    Öffnen Sie die Seite Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen.

  3. Klicken Sie auf API-Schlüssel.

    Es wird ein Dialogfeld mit Ihrem erstellten API-Schlüssel angezeigt. Notieren Sie sich Ihren API-Schlüssel.

  4. 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

Zum Verbinden Ihres Bitbucket Server-Hosts weisen Sie Ihrem Nutzerkonto die Rolle Cloud Build-Bearbeiter (roles/cloudbuild.builds.editor) und die Rolle Cloud Build-Integrationen-Inhaber (cloudbuild.integrations.owner) zu.

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 zwei persönliche Zugriffstokens in Bitbucket Server erstellen, um die folgenden Aufgaben auszuführen:

Diese persönlichen Zugriffstokens haben die erforderlichen Mindestberechtigungen. Möglicherweise müssen Sie in Bitbucket Server zusätzliche Berechtigungen konfigurieren. Sie können beispielsweise Bitbucket Server-Konto auswählen, um nur auf eine Teilmenge der Repositories in Ihrer Bitbucket Server-Instanz zuzugreifen und so genauer zu steuern, was in Cloud Build verfügbar ist.

Nachdem Sie Ihre persönlichen Zugriffstoken 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 -Konsole mit Cloud Build:

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories:

    Zur Seite „Repositories“

  2. Wähle oben auf der Seite den Tab 1. Generation aus.

  3. Klicken Sie auf Host verbinden.

  4. Wählen Sie im Drop-down-Menü Bitbucket Server aus.

    Das Feld 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.

    1. Host-URL: Die Host-URL Ihrer Bitbucket Server-Instanz. Beispiel: https://bbs.example-test.com:7990

    2. Google Cloud API-Schlüssel: Ihr API-Schlüssel, mit dem Sie Ihre Anmeldedaten authentifizieren.

    3. CA-Zertifikat: Ihr selbst signiertes Zertifikat. Ihr Zertifikat darf nicht größer als 10 KB sein und sollte das PEM-Format (.pem, .cer oder .crt) haben. Wenn dieser Abschnitt leer bleibt, wird ein Standardsatz von Zertifikaten verwendet.

    4. Nutzername: Der Nutzername Ihres Bitbucket Server-Kontos. Dieses Konto sollte Administratorzugriff auf die Repositories haben, die Sie mit Cloud Build verbinden möchten.

    5. Lesezugriffstoken: Das persönliche Zugriffstoken Ihres Bitbucket Server-Kontos mit Leseberechtigungen.

    6. Administratorzugriffstoken: Das persönliche Zugriffstoken Ihres Bitbucket Server-Kontos mit Administratorberechtigungen für Projekte und Repositorys.

    7. Wählen Sie unter Netzwerktyp eine der folgenden Optionen aus:

      1. Öffentliches Internet: Wählen Sie diese Option aus, wenn Ihre Instanz über das öffentliche Internet zugänglich ist.

      2. Privates Netzwerk: Wählen Sie diese Option aus, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.

        1. Projekt: Wählen Sie Ihre Google Cloud Projekt-ID aus.

        2. 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 eine Anleitung dazu.

        3. IP-Bereich: Geben Sie den internen IP-Bereich ein, der VMs innerhalb des zugewiesenen Bereichs eines per Peering verbundenen Netzwerks zugewiesen werden kann.

          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 von 192.0.2.0 bis 192.0.2.255 reichen.

          Der Wert für die Präfixlänge darf /29 nicht überschreiten. Wenn kein Wert für den Bereich angegeben ist, wird automatisch der Standardwert /24 zugewiesen. Wenn kein Wert für die Präfixlänge angegeben ist, werden IP-Adressen automatisch im VPC-Netzwerk mit Peering zugewiesen. Wenn kein Wert für die IP-Adresse angegeben ist, wird der IP-Adresse automatisch ein Bereich innerhalb des per Peering verbundenen VPC-Netzwerk zugewiesen.

  5. Klicken Sie auf Host verbinden.

    Wenn sich die Bitbucket Server-Instanz in einem Peering-Netzwerk befindet, kann die Verbindung des Hosts 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 Ihren Bitbucket Server-Host mit 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. Im Gegensatz zur Verbindung Ihres Hosts über dieGoogle Cloud -Konsole 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önnen latest 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 im Secret Manager gespeicherten Lesezugriffstokens.
  • WEBHOOK_SECRET_SECRET_VERSION ist der Ressourcenname Ihres im Secret Manager gespeicherten Webhook-Secrets.
  • API_KEY ist der Google Cloud API-Schlüssel.
  • [Optional] PEERED_NETWORK ist das VPC-Netzwerk, mit dem eine Verbindung zu Ihren lokalen Bitbucket Server-Instanzen hergestellt werden soll. Weitere Informationen finden Sie unter Repositories über Bitbucket Server in einem privaten Netzwerk erstellen.

  • [Optional] PEERED_NETWORK_IP_RANGE ist der interne IP-Bereich, der VMs innerhalb des zugewiesenen Bereichs eines Peering-Netzwerks zugewiesen werden kann.

  • SSL_CA_FILE ist der Pfad zu einer lokalen Datei, die Ihr SSL-Zertifikat für Anfragen an Bitbucket Server enthält. Das Zertifikat sollte im PEM-Format vorliegen.

API

Verwenden Sie die folgende JSON-Vorlage, um Ihren Bitbucket Server-Host über die API mit Cloud Build zu verbinden. Im Gegensatz zur Verbindung Ihres Hosts über die Google Cloud -Konsole müssen Sie Ihre persönlichen Zugriffstokens und das Webhook-Secret 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-Dienst-Agenten service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com die Rolle Zugriffsperson für Secret Manager-Secret zuweisen. Weitere Informationen finden Sie unter Dienstkonto die Rolle Secret Manager zuweisen.

  • READ_ACCESS_TOKEN_SECRET_VERSION ist der Ressourcenname Ihres im Secret Manager gespeicherten Lesezugriffstokens.

  • WEBHOOK_SECRET_SECRET_VERSION ist der Ressourcenname Ihres im Secret Manager gespeicherten Webhook-Secrets.

  • [Optional] PEERED_NETWORK ist das VPC-Netzwerk, mit dem Ihre lokalen Bitbucket Server-Instanzen per Peering verbunden werden sollen.

    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 Bits des IP-Bereichs werden als Subnetzmaske (192.0.2.0) verwendet, während die möglichen Hostadressen von 192.0.2.0 bis 192.0.2.225 reichen.

  • [Optional] PEERED_NETWORK_IP_RANGE ist der interne IP-Bereich, der VMs innerhalb des zugewiesenen Bereichs eines Peering-Netzwerks zugewiesen werden kann.

  • [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 des Vorgangs zum Erstellen 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, sehen Sie sie im Feld response.value. Andernfalls finden Sie im Feld error einen detaillierten Fehlerbericht.

Nächste Schritte