Auf dieser Seite wird beschrieben, wie Sie einen GitLab-Host mit Cloud Build verbinden.
Hinweis
Aktivieren Sie die Cloud Build API und die Secret Manager API, falls sie noch nicht aktiviert sind.
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
Verbindung zu einem GitLab-Host herstellen
Bevor Sie eine Hostverbindung für Ihre GitLab-Instanz erstellen, müssen Sie persönliche Zugriffstokens in GitLab erstellen. Führen Sie dazu die folgenden Schritte aus:
Melden Sie sich in Ihrer GitLab-Instanz an.
Klicken Sie auf der GitLab-Seite für Ihre Instanz rechts oben auf Ihren Avatar.
Klicken Sie auf Profil bearbeiten.
Wählen Sie in der linken Seitenleiste Zugriffstokens aus.
Die Seite Personal Access Tokens (Persönliche Zugriffstokens) wird angezeigt.
Erstellen Sie ein Zugriffstoken mit dem Bereich
api, das zum Verbinden und Trennen von Repositories verwendet werden kann.Erstellen Sie ein Zugriffstoken mit dem Bereich
read_api, damit Cloud Build-Repositories auf Quellcode in Repositories zugreifen können.
Console
So verbinden Sie Ihren GitLab-Host mit Cloud Build:
Öffnen Sie in der Google Cloud Console die Seite Repositories.
Die Seite Repositories wird angezeigt.
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 GitLab als Quellanbieter aus.
Geben Sie im Abschnitt Verbindung konfigurieren die folgenden Informationen ein:
Region: Wählen Sie eine Region für Ihre Verbindung aus.
Name: Geben Sie einen Namen für die Verbindung ein.
Gehen Sie im Bereich Hostdetails zu GitLab-Host und wählen Sie GitLab.com aus.
Optional: Wenn Sie die Verschlüsselungsschlüssel verwalten möchten, die zum Verschlüsseln der Zugriffstokens für Ihre GitLab-Repositories verwendet werden, rufen Sie den Abschnitt 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.
Geben Sie im Bereich Persönliche Zugriffstokens die folgenden Informationen ein:
API-Zugriffstoken: Geben Sie das Token mit dem Zugriffsbereich
apiein. Dieses Token wird zum Verbinden und Trennen von Repositories verwendet.API-Zugriffstoken mit Leseberechtigung: Geben Sie das Token mit dem
read_api-Bereich 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. Nach der Hostverbindung erstellt Cloud Build auch ein Webhook-Secret in Ihrem Namen. Sie können Ihre Secrets auf der Seite Secret Manager ansehen und verwalten.
Sie haben jetzt erfolgreich eine GitLab-Verbindung erstellt.
gcloud
Bevor Sie Ihren GitLab-Host mit Cloud Build verbinden, führen Sie die folgenden Schritte aus, um Ihre Anmeldedaten zu speichern:
Erstellen Sie ein Webhook-Secret in Secret Manager, indem Sie den folgenden Befehl ausführen:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-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, geben Sie den folgenden Befehl ein, 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 GitLab-Host mit Cloud Build verbinden.
Gehen Sie folgendermaßen vor:
So verbinden Sie Ihren GitLab-Host mit Cloud Build:
Geben Sie den folgenden Befehl ein, um eine GitLab-Verbindung zu erstellen:
gcloud builds connections create gitlab CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_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_VERSIONWobei:
- CONNECTION_NAME ist ein Name für Ihre GitLab-Hostverbindung in Cloud Build.
- HOST_URI ist der URI Ihrer GitLab-Instanz. Beispiel:
https://my-gle-server.net. - PROJECT_ID ist die Google Cloud -Projekt-ID.
- REGION ist die Region für Ihre Verbindung.
- API_TOKEN ist der Name Ihres Tokens mit dem
api-Bereich. - READ_TOKEN ist der Name Ihres Tokens mit dem
read_api-Bereich. - SECRET_VERSION ist die Version Ihres Secrets.
- WEBHOOK_SECRET ist Ihr Webhook-Secret.
Sie haben jetzt erfolgreich eine GitLab-Verbindung erstellt.
Alte oder abgelaufene GitLab-Zugriffstokens rotieren
Rotieren Sie Ihre Zugriffstokens, damit die Cloud Build-Hostverbindung die Verbindung zu Ihrem GitLab-Repository aufrechterhalten kann. Wenn Ihr GitLab-Zugriffstoken abläuft, wird die Cloud Build-Hostverbindung von ihrem GitLab-Repository getrennt. In diesem Fall können Sie die Verbindung erst deaktivieren oder ein Repository verknüpfen, wenn Sie das abgelaufene Token rotieren. Außerdem werden in den folgenden Fällen Fehler angezeigt:
Auf der Seite Connections detail (Verbindungsdetails) für Ihre Verbindung wird die Fehlermeldung
Connection is disconnected due to an invalid or expired access tokenangezeigt.Wenn Sie versuchen, ein Repository mit einer Verbindung zu verknüpfen, für die ein abgelaufenes Token verwendet wird, wird die Meldung Ungültiges Zugriffstoken angezeigt. Wenn Sie auf Verbindung ansehen klicken, gelangen Sie zur Seite Verbindungsdetails für die Verbindung mit dem abgelaufenen Token.
Mit Cloud Build können Sie Zugriffstokens rotieren, indem Sie neue Tokenwerte eingeben und sie in Secret Manager in der neuesten Secret-Version für diese Tokens speichern. So rotieren Sie Ihre Zugriffstokens:
Rotieren Sie jedes Zugriffstoken in GitLab:
Rufen Sie das GitLab-Repository auf, das mit Ihrer Cloud Build-Hostverbindung verbunden ist.
Folgen Sie der Anleitung in der GitLab-Dokumentation, um ein Zugriffstoken zu rotieren. Wenn Sie ein Token rotieren, erstellt GitLab ein neues Token mit neuen Anmeldedaten und macht die vorherige Version dieses Tokens ungültig. Das rotierte Token hat dieselben Berechtigungen und denselben Bereich wie das ursprüngliche Token.
Kopieren Sie die IDs der rotierten Tokens.
Aktualisieren Sie Ihr Zugriffstoken in Cloud Build:
Rufen Sie die Seite Verbindungsdetails für Ihre Verbindung auf.
Wählen Sie Zugriffstokens aktualisieren aus.
Geben Sie im Menü Token-Rotation Ihre neuen Tokens in die Felder API-Zugriffstoken und Token mit Leseberechtigung ein.
Optional: Wenn für Ihre Verbindung immer die aktuelle Version des Secrets für Ihre Tokens verwendet werden soll, wählen Sie Verbindung aktualisieren, damit immer die aktuelle Version verwendet wird aus. Wenn Sie diese Option nicht auswählen, kann das hilfreich sein, wenn für Ihre Verbindung eine bestimmte Version der Geheimnisnummer verwendet wird.
Wählen Sie Aktualisieren aus, um die Änderungen zu speichern.
Cloud Build speichert die neuen Zugriffstokens als aktuelle Version Ihres Secrets in Secret Manager.
Nächste Schritte
- Informationen zum Verbinden eines GitLab-Repositorys
- Hier erfahren Sie, wie Sie Ihre Arbeitslasten in Google Cloud erstellen und bereitstellen können, indem Sie von Google verwaltete CI/CD-Komponenten in Ihrer GitLab-Pipeline verwenden. Weitere Informationen finden Sie unter GitLab on Google Cloud.