Auf dieser Seite wird erläutert, wie Sie ein GitHub verbinden. zu Cloud Build. Weitere Informationen zu Cloud Build-Repositories finden Sie unter Cloud Build-Repositories.
Hinweise
-
Enable the Cloud Build and Secret Manager APIs.
- Halten Sie Ihren Quellcode in einem GitHub-Repository bereit.
- Sie benötigen entweder eine
Dockerfile
oder eine Cloud Build-Konfigurationsdatei in Ihrem GitHub-Quell-Repository. - Wenn Sie Ihr Repository zum ersten Mal mit Cloud Build verbinden, benötigen Sie Berechtigungen auf Administratorebene für das Repository. Weitere Informationen zu GitHub-Repository-Berechtigungen finden Sie unter Repository-Berechtigungsstufen für eine Organisation.
Installieren Sie die Google Cloud CLI, um
gcloud
-Befehle auf dieser Seite zu verwenden.
Erforderliche IAM-Berechtigungen
Gewähren Sie dem Cloud Build Connection Admin (roles/cloudbuild.connectionAdmin
), um eine Verbindung zu Ihrem GitHub-Host herzustellen
Rolle zu Ihrem Nutzerkonto zugewiesen.
Informationen zum Hinzufügen der erforderlichen Rollen zu Ihrem Nutzerkonto finden Sie unter Zugriff auf Cloud Build-Ressourcen konfigurieren. Bis Weitere Informationen zu IAM-Rollen im Zusammenhang mit Cloud Build finden Sie unter IAM-Rollen und -Berechtigungen.
Wenn Sie Verbindungen mithilfe der Installationsschritte von gcloud
erstellen möchten, weisen Sie dem Cloud Build-Dienst-Agent die Rolle „Secret Manager Admin“ (roles/secretmanager.admin
) zu. Führen Sie dazu in Ihrem Google Cloud-Projekt den folgenden Befehl aus:
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"
GitHub-Host verbinden
Console
So verbinden Sie Ihr GitHub-Repository mit Cloud Build:
Öffnen Sie in der Cloud Console die Seite Repositories.
Sie sehen die Seite Repositories.
Wählen Sie in der Projektauswahl in der oberen Leiste Ihr Google Cloud-Projekt aus.
Wählen Sie oben auf der Seite den Tab 2. Generation aus.
Klicken Sie auf Hostverbindung erstellen, um einen neuen Host mit Cloud Build zu verbinden.
Wählen Sie im linken Bereich GitHub 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.
Klicken Sie auf Verbinden.
Nachdem Sie auf die Schaltfläche Verbinden geklickt haben, werden Sie aufgefordert, der Cloud Build GitHub-Anwendung Zugriff auf Ihr GitHub-Konto zu gewähren. Sie können den Zugriff auf die App jederzeit widerrufen, indem Sie die App von Ihrem Host deinstallieren oder löschen.
Cloud Build fordert die Autorisierung Ihres GitHub-Nutzerkontos an und speichert das resultierende Autorisierungstoken als Secret in Secret Manager in Ihrem Projekt. Das Autorisierungstoken ist wird verwendet, um den Zugriff Ihres Benutzerkontos für die Installation des Cloud Build-GitHub-Anwendung und die verknüpften Repositories. Cloud Build Das Dienst-Agent-Konto (
service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com
) wird für den Zugriff auf Ihr Secret verwendet. So rufen Sie Ihr Secret auf: Weitere Informationen finden Sie unter Secrets auflisten und Secret-Details ansehen.Nach der Autorisierung der Cloud Build-GitHub-Anwendung an die Cloud Build-Repositories weitergeleitet Seite.
Sie haben nun erfolgreich eine GitHub-Verbindung erstellt.
gcloud
So verbinden Sie Ihren GitHub-Host mit gcloud
:
führen Sie die folgenden Schritte aus:
Geben Sie den folgenden Befehl ein, um eine Verbindung zu GitHub herzustellen Repository:
gcloud builds connections create github CONNECTION_NAME --region=REGION
Wobei:
- CONNECTION_NAME ist der Name der Verbindung.
REGION ist die Region für den Trigger.
Nachdem Sie den Befehl
gcloud builds connections
ausgeführt haben, wird ein Link zum Autorisieren angezeigt. die Cloud Build GitHub-Anwendung.Melden Sie sich in Ihrem
github.com
-Konto an.Folgen Sie dem Link, um die Cloud Build-GitHub-Anwendung zu autorisieren.
Nach der Autorisierung der Anwendung speichert Cloud Build eine Authentifizierung Token als Secret in Secret Manager in Ihrer Google Cloud Projekt arbeiten. Sie können Ihre Secrets auf der Seite Secret Manager ansehen.
Installieren Sie die Cloud Build GitHub-App in Ihrem Konto oder in einer Organisation, deren Inhaber Sie sind.
Lassen Sie die Installation mit Ihrem GitHub-Konto zu und wählen Sie das Repository aus wenn Sie dazu aufgefordert werden.
Prüfen Sie die Installation der GitHub-Verbindung mit dem folgenden Befehl:
gcloud builds connections describe CONNECTION_NAME --region=REGION
Wobei:
- CONNECTION_NAME ist der Name der Verbindung.
- REGION ist die Region für den Trigger.
Wenn das Feld
installationState
aufCOMPLETE
gesetzt ist, wurde die Verbindung erfolgreich installiert. Andernfalls enthält das FeldinstallationState
einen Link zu den erforderlichen zusätzlichen Schritten.
Sie haben jetzt eine GitHub-Verbindung erstellt.
GitHub-Host programmatisch verbinden
Terraform
Sie können Ihren GitHub-Host über den Google Terraform-Provider mit Cloud Build verbinden. Führen Sie dazu die folgenden Schritte aus:
Cloud Build GitHub-Anwendung installieren in Ihrem GitHub-Konto oder in einer Organisation, deren Inhaber Sie sind.
Erstellen Sie ein persönliches Zugriffstoken.
Achten Sie darauf, dass Ihr Token kein Ablaufdatum hat, und wählen Sie die Option die folgenden Berechtigungen, wenn Sie in GitHub dazu aufgefordert werden:
repo
undread:user
. Wenn Ihre App in einer Organisation installiert ist, müssen Sie auch die Berechtigungread:org
auswählen.Nachdem Sie Ihr persönliches Zugriffstoken generiert haben, speichern Sie das generierte an einem sicheren Ort. Sie verwenden das generierte Token im folgenden Schritten.
Im folgenden Beispiel führt das Code-Snippet die folgenden Schritte aus:
Konfiguriert den Terraform-Google-Anbieter
Erstellt ein Secret zum Speichern persönlicher GitHub-Zugriffstokens, um dem Cloud Build-Dienstagenten Berechtigungen zum Zugriff auf das Secret zu gewähren
Erstellt eine GitHub-Verbindung
// Configure the terraform google provider terraform { required_providers { google = {} } } // Create a secret containing the personal access token and grant permissions to the Service Agent resource "google_secret_manager_secret" "github_token_secret" { project = PROJECT_ID secret_id = SECRET_ID replication { auto {} } } resource "google_secret_manager_secret_version" "github_token_secret_version" { secret = google_secret_manager_secret.github_token_secret.id secret_data = GITHUB_PAT } 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" { project = google_secret_manager_secret.github_token_secret.project secret_id = google_secret_manager_secret.github_token_secret.secret_id policy_data = data.google_iam_policy.serviceagent_secretAccessor.policy_data } // Create the GitHub connection resource "google_cloudbuildv2_connection" "my_connection" { project = PROJECT_ID location = REGION name = CONNECTION_NAME github_config { app_installation_id = INSTALLATION_ID authorizer_credential { oauth_token_secret_version = google_secret_manager_secret_version.github_token_secret_version.id } } depends_on = [google_secret_manager_secret_iam_policy.policy] }
Wobei:
- PROJECT_NUMBER ist die Nummer Ihres Google Cloud-Projekts.
- SECRET_ID ist die ID Ihres Tokens oder Secrets in Secret Manager.
- GITHUB_PAT ist die ID Ihres persönlichen Zugriffstokens in GitHub.
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
- REGION ist die Region für Ihre Verbindung.
- CONNECTION_NAME ist der Name Ihrer GitHub-Verbindung.
- INSTALLATION_ID ist die Installations-ID Ihrer Cloud Build-GitHub-Anwendung. Ihr
Die Installations-ID finden Sie in der URL Ihres Cloud Build-
GitHub-Anwendung In der URL
https://github.com/settings/installations/1234567
ist die Installations-ID der numerische Wert1234567
.
Sie haben jetzt eine GitHub-Verbindung erstellt.
gcloud
So stellen Sie eine Verbindung zwischen Ihrem GitHub-Host und einem vorhandenen Token und einer Installations-ID her, die Sie bei einer früheren Verbindung erhalten haben:
Installieren Sie die Cloud Build GitHub-App in Ihrem GitHub-Konto oder in einer Organisation, deren Inhaber Sie sind.
Erstellen Sie ein persönliches Zugriffstoken.
Achten Sie darauf, dass Ihr Token kein Ablaufdatum hat, und wählen Sie in GitHub die folgenden Berechtigungen aus:
repo
undread:user
. Wenn Ihre App in einer Organisation installiert ist, müssen Sie auch die Berechtigungread:org
auswählen.Nachdem Sie Ihr persönliches Zugriffstoken generiert haben, speichern Sie das generierte an einem sicheren Ort. Sie verwenden das generierte Token im folgenden Schritten.
Speichern Sie Ihr Token in Secret Manager in Ihrem Google Cloud-Projekt. Führen Sie dazu den folgenden Befehl aus:
echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-
Wobei:
- TOKEN ist Ihr persönliches Zugriffstoken.
- SECRET_NAME ist der Name, den Sie Ihrem in Secret Manager erstellen.
Gewähren Sie dem Cloud Build-Dienst-Agent für das Secret Zugriff, wobei SECRET_NAME ist der Name Ihres Secrets, wie er in folgendem Verzeichnis gespeichert ist: Secret Manager:
PROJECT_ID=$(gcloud config list --format="value(core.project)") PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud secrets add-iam-policy-binding SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.secretAccessor"
Erstellen Sie die GitHub-Verbindung:
gcloud builds connections create github CONNECTION_NAME \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/1 \ --app-installation-id=INSTALLATION_ID --region=REGION
Wobei:
- CONNECTION_NAME ist der Name der Verbindung.
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
- SECRET_NAME ist der Name des Secrets, wie er im Secret Manager gespeichert ist.
- INSTALLATION_ID ist die Installations-ID Ihrer GitHub-App. Sie finden sie in der URL Ihrer Cloud Build-GitHub-App. In der folgenden URL,
https://github.com/settings/installations/1234567
, ist die Installations-ID der numerische Wert1234567
. - REGION ist die Region Ihrer Verbindung.
Sie haben jetzt eine GitHub-Verbindung erstellt.
GitHub-Repository verbinden
Console
So stellen Sie eine Verbindung zwischen einem GitHub-Repository und einer Hostverbindung her:
Öffnen Sie in der Cloud Console die Seite Repositories.
Sie sehen die Seite Repositories.
Wählen Sie oben auf der Seite den Tab 2. Generation aus.
Klicken Sie auf Repositorys verknüpfen, um Repositories über Ihre Verbindung zu verknüpfen.
Der Bereich Repositories verbinden wird angezeigt.
Geben Sie im Bereich Repositories verbinden die folgenden Informationen ein:
- Verbindung: Wählen Sie im Drop-down-Menü eine Verbindung aus.
Repository: Wählen Sie ein Repository aus, das mit Ihrer Verbindung verknüpft werden soll.
Repository-Name: Geben Sie einen Namen für das Repository ein.
- Generiert: Wählen Sie diese Option aus, damit Cloud Build automatisch Repository-Namen für ausgewählte Repositories in Ihrem Namen generiert.
Manuell: Wählen Sie diese Option aus, um Namen für die ausgewählten Repositories manuell anzugeben.
Wenn Sie Manuell auswählen, können Sie die Namen der ausgewählten Repositories im Abschnitt Repository-Namen ändern.
Klicken Sie auf Verknüpfen, um Ihr Repository mit Ihrer Verbindung zu verknüpfen.
Sie haben Ihr GitHub-Repository jetzt mit Ihrer Verbindung verknüpft.
gcloud
Wenn Sie Ihrer Verbindung ein GitHub-Repository hinzufügen möchten, geben Sie den folgenden Befehl ein:
gcloud builds repositories create REPO_NAME \
--remote-uri=REPO_URI \
--connection=CONNECTION_NAME --region=REGION
Wobei:
- REPO_NAME ist der Name Ihres Repositorys.
- REPO_URI ist der Link zu Ihrem GitHub-Repository. Beispiel:
https://github.com/cloud-build/test-repo.git
- CONNECTION_NAME ist der Name der Verbindung.
- REGION ist die Region für Ihre Verbindung.
Sie haben jetzt ein Repository mit Ihrer GitHub-Verbindung verknüpft.
Terraform
Wenn Sie Ihrer Verbindung ein GitHub-Repository hinzufügen möchten, fügen Sie Ihrer Terraform-Konfiguration das folgende Code-Snippet hinzu:
resource "google_cloudbuildv2_repository" "my_repository" {
project = "PROJECT_ID"
location = "REGION"
name = "REPO_NAME"
parent_connection = google_cloudbuildv2_connection.my_connection.name
remote_uri = "URI"
}
Wobei:
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
- REPO_NAME ist der Name Ihres GitHub-Repositorys.
- REGION ist die Region für Ihre Verbindung.
- URI ist der Host-URI Ihres Repositorys. Beispiel:
https://github.com/myuser/myrepo.git
Sie haben jetzt ein Repository mit Ihrer GitHub-Verbindung verknüpft.