Auf dieser Seite wird erläutert, wie Sie eine Verbindung zwischen dem GitLab Enterprise Edition-Host und Cloud Build herstellen.
Hinweise
-
Enable the Cloud Build and Secret Manager APIs.
Hostanforderungen
Wenn Sie noch keine GitLab Enterprise Edition-Serverinstanz installiert haben, finden Sie in der Installationsanleitung von GitLab Enterprise Edition eine entsprechende Anleitung.
Beachten Sie bei der Installation einer GitLab Enterprise Edition-Serverinstanz Folgendes:
Sie müssen Ihren Host für die Verarbeitung des
HTTPS
-Protokolls konfigurieren. Konfigurierte Hosts mit demHTTP
-Protokoll werden nicht unterstützt.Sie müssen Ihren Host mit der URL konfigurieren, die für den Zugriff auf Ihren von Google Cloud. Weitere Informationen finden Sie in der GitLab-Dokumentation zum Konfigurieren der externen URL.
Erforderliche IAM-Berechtigungen
Gewähren Sie den Cloud Build, um Ihren GitLab Enterprise Edition-Host zu verbinden
Verbindungsadministrator (roles/cloudbuild.connectionAdmin
)
Rolle zu Ihrem Nutzerkonto zugewiesen.
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.
Wenn Ihre GitLab Enterprise Edition-Instanz in einem privaten Netzwerk gehostet wird, Weitere Informationen finden Sie unter Repositories aus GitLab Enterprise Edition in einem privaten Netzwerk erstellen. Informationen zu weiteren IAM-Rollen, die vor dem Hostverbindung.
Verbindung zu einem GitLab Enterprise Edition-Host herstellen
Bevor Sie eine Hostverbindung für Ihre GitLab Enterprise Edition-Instanz erstellen, müssen Sie persönliche Zugriffstokens in GitLab Enterprise Edition erstellen. Gehen Sie dazu so vor:
Melden Sie sich in Ihrer GitLab Enterprise Edition-Instanz an.
Klicken Sie auf der GitLab Enterprise Edition-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 Persönliche Zugriffstokens wird angezeigt.
Erstellen Sie ein Zugriffstoken mit dem Bereich
api
, das zum Verbinden und Trennen von Repositories verwendet werden soll.Zugriffstoken mit dem Bereich
read_api
erstellen um sicherzustellen, dass Cloud Build-Repositories auf Quellcode in den Repositories zugreifen können.
Console
So verbinden Sie Ihren GitLab Enterprise Edition-Host mit Cloud Build:
Öffnen Sie in der 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 die Verbindung aus.
Name: Geben Sie einen Namen für die Verbindung ein.
Wählen Sie im Abschnitt Host Details (Hostdetails) Folgendes aus oder geben Sie Folgendes ein: Informationen:
GitLab-Anbieter: Wählen Sie Self-managed GitLab Enterprise Edition (Selbstverwaltete GitLab Enterprise Edition) als Anbieter aus.
Host-URL: Geben Sie die Host-URL für die Verbindung ein. Beispiel:
https://my-gle-server.net
.CA-Zertifikat: Klicken Sie auf „Durchsuchen“, um Ihr selbst signiertes Zertifikat hochzuladen.
Wählen Sie unter Verbindungstyp eine der folgenden Optionen aus:
Öffentliches Internet: Wählen Sie diese Option aus, wenn die Instanz über das öffentliche Internet zugänglich ist.
Privater Netzwerkzugriff: Wählen Sie diese Option aus, wenn die Instanz in einem privaten Netzwerk gehostet wird.
Wählen Sie unter Service Directory-Dienst den Standort für Ihren Dienst aus:
- Im Projekt
your-project
- In einem anderen Projekt
- Manuell eingeben
Wenn Sie In einem anderen Projekt oder Manuell eingeben auswählen, geben Sie die folgenden Informationen ein:
Projekt: Geben Sie die Google Cloud-Projekt-ID ein oder wählen Sie sie aus dem Drop-down-Menü aus.
Region: In diesem Feld wird die Region Ihrer Verbindung vorab ausgewählt. Die angegebene Region für Ihren Dienst 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.
- Im Projekt
Geben Sie im Bereich Persönliche Zugriffstokens die folgenden Informationen ein:
API-Zugriffstoken: Geben Sie das Token mit dem Bereichszugriff
api
ein. Dieses Token wird zum Verbinden und Trennen von Repositories verwendet.API-Zugriffstoken lesen: Geben Sie das Token mit dem Bereich
read_api
ein. Zugriff haben. 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. Auf der Seite „Secret Manager“ können Sie Secrets aufrufen und verwalten. Sie können Ihre Secrets auf der Seite Secret Manager ansehen und verwalten.
Sie haben jetzt erfolgreich eine GitLab Enterprise Edition-Verbindung erstellt.
gcloud
Bevor Sie Ihren GitLab Enterprise Edition-Host mit Cloud Build verbinden, müssen Sie Ihre Anmeldedaten speichern. Gehen Sie dazu so vor:
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 Geheimnisse in einem anderen Google Cloud-Projekt speichern als dem, mit dem Sie eine Hostverbindung erstellen möchten, geben Sie den folgenden Befehl ein, um Ihrem Projekt Zugriff auf den Cloud Build-Dienstagenten 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 Ihre Google Cloud-Projekt-ID.
Sie können jetzt mit der Verbindung Ihres GitLab Enterprise Edition-Hosts mit Cloud Build fortfahren.
Gehen Sie folgendermaßen vor:
Geben Sie den folgenden Befehl ein, um eine Verbindung zur GitLab Enterprise Edition herzustellen:
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_VERSION
Wobei:
- CONNECTION_NAME ist der Name Ihrer Verbindung.
- HOST_URI ist der URI Ihrer GitLab Enterprise Edition-Instanz. Beispiel:
https://my-gle-server.net
. - PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
- REGION ist die Region für Ihre Verbindung.
- API_TOKEN ist der Name Ihres Tokens mit dem Bereich
api
. - READ_TOKEN ist der Name des Tokens mit dem Bereich
read_api
. - SECRET_VERSION ist die Version Ihres Secrets.
- WEBHOOK_SECRET ist Ihr Webhook-Secret.
Sie haben jetzt eine GitLab Enterprise Edition-Verbindung erstellt.
Terraform
Sie können Ihren GitLab Enterprise Edition-Host mithilfe von Terraform mit Cloud Build verbinden.
Im folgenden Beispiel führt das Code-Snippet die folgenden Schritte aus:
- Terraform-Anbieter für Google konfigurieren
- Erstellt ein Secret zum Speichern Ihres persönlichen GitLab Enterprise Edition-Zugriffstokens
- Gewährt dem Cloud Build-Dienst-Agent die erforderlichen Berechtigungen für den Zugriff auf Secrets
Erstellt eine GitLab Enterprise Edition-Verbindung
// Configure the Terraform Google provider terraform { required_providers { google = {} } } // Create secrets and grant permissions to the Cloud Build service agent resource "google_secret_manager_secret" "api-pat-secret" { project = "PROJECT_ID" secret_id = "GITLAB_PAT_API" replication { auto {} } } resource "google_secret_manager_secret_version" "api-pat-secret-version" { secret = google_secret_manager_secret.api-pat-secret.id secret_data = "GITLAB_API_TOKEN" } resource "google_secret_manager_secret" "read-pat-secret" { project = "PROJECT_ID" secret_id = "GITLAB_PAT_READ" replication { auto {} } } resource "google_secret_manager_secret_version" "read-pat-secret-version" { secret = google_secret_manager_secret.pat-secret.id secret_data = "GITLAB_API_TOKEN" } resource "google_secret_manager_secret" "webhook-secret-secret" { project = "PROJECT_ID" secret_id = "WEBHOOK_SECRET" 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" "serviceagent-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.private-key-secret.project secret_id = google_secret_manager_secret.private-key-secret.secret_id policy_data = data.google_iam_policy.serviceagent-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-rpak" { 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.serviceagent-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.serviceagent-secretAccessor.policy_data } // Create the connection and add the repository resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" gitlab_config { authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.pat-secret-version.id } read_authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.pat-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.
- GITLAB_PAT_API ist Ihr persönliches Zugriffstoken mit
api
-Zugriff. - GITLAB_API_TOKEN ist Ihr persönliches Zugriffstoken.
- GITLAB_PAT_READ ist Ihr persönliches Zugriffstoken mit
read_api
-Zugriff. - WEBHOOK_SECRET ist der Secret-Name, der den Wert Ihres Webhook-Secrets enthält.
- WEBHOOK_SECRET_VALUE ist der Wert Ihres Webhook-Secrets.
- REGION ist die Region für Ihre Verbindung.
- CONNECTION_NAME ist der Name Ihrer GitLab Enterprise Edition-Verbindung.
- URI ist der URI Ihrer Verbindung. Beispiel:
https://my-gitlab-enterprise-server.net
. Sie haben jetzt erfolgreich eine GitLab Enterprise Edition-Verbindung erstellt.
Nächste Schritte
- Informationen zum Verbinden eines GitLab Enterprise Edition-Repositorys
- Informationen zum Erstellen und Bereitstellen von Arbeitslasten in Google Cloud mit von Google verwalteten CI/CD-Komponenten in Ihrer GitLab-Pipeline. Weitere Informationen finden Sie unter GitLab on Google Cloud.