Builds bei Repository-Ereignissen automatisieren

Sie können automatisierte Image Builder-Pipelines konfigurieren, die ausgeführt werden, wenn Sie Konfigurationsänderungen in Ihr Git-Repository übertragen, z. B. in main. Durch die Automatisierung von Builds bei Repository-Ereignissen wird sichergestellt, dass Cloud Build Ihre benutzerdefinierten Betriebssystem-Images nach der Codeüberprüfung oder dem Zusammenführen sofort validiert, erstellt und in Compute Engine und Artifact Registry veröffentlicht.

Hinweis

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen zum Erstellen von Repository-Ereignistriggern haben:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Repository-Automatisierung konfigurieren

Sie können Repository-Ereignistrigger mit der gcloud CLI oder mit Terraform konfigurieren. Wählen Sie einen der folgenden Tabs aus, um Repository-Trigger zu konfigurieren:

gcloud

Sie können einen automatisierten Repository-Trigger mit dem Befehl gcloud builds triggers create erstellen und direkt auf den Link zu Ihrem verbundenen Repository der 2. Generation (--repository) verweisen.

gcloud builds triggers create repository \
    --name="TRIGGER_NAME" \
    --repository="projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME" \
    --branch-pattern="^main$" \
    --build-config="CLOUDBUILD_YAML_PATH" \
    --service-account="projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL" \
    --substitutions="_GCS_WORKDIR=gs://STAGING_BUCKET/workdir/,_IMAGE_BUILDER_CONFIG_PATH=RECIPE_PATH,_SERVICE_ACCOUNT=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL,_IMAGE_OUTPUT_PATH=image-builder/binaryOut" \
    --region=REGION \
    --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • TRIGGER_NAME: Der Name für Ihren Trigger, z. B. git-push-custom-os-builder.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: Die Region, in der Ihre Repository-Verbindung gehostet wird und in der der Job für die Anpassung der Images ausgeführt wird, z. B. us-central1.
  • CONNECTION_NAME: Der Name Ihrer Developer Connect-Verbindung, z. B. github-connection.
  • REPO_NAME: Der Name des verknüpften Git-Repositorys.
  • CLOUDBUILD_YAML_PATH: der relative Pfad zu cloudbuild.yaml in Ihrem lokalen Verzeichnis.
  • SERVICE_ACCOUNT_EMAIL: die genaue E-Mail-Adresse Ihres Dienstkontos für den Build.
  • STAGING_BUCKET: Der Name Ihres Cloud Storage-Staging-Buckets workdir.
  • RECIPE_PATH: der relative Pfad zu imagebuilder.yaml in Ihrem Repository.

Terraform

Führen Sie die folgenden Schritte aus, um einen automatisierten Repository-Trigger mit Terraform zu konfigurieren:

  1. Fügen Sie die Triggerressource Ihrer Konfigurationsdatei main.tf hinzu:

    resource "google_cloudbuild_trigger" "repository_trigger" {
      name        = "TRIGGER_NAME"
      location    = "REGION"
      project     = "PROJECT_ID"
      description = "Triggers custom OS image builds on repository push events"
    
      repository_event_config {
        repository = "projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME"
        push {
          branch = "^main$"
        }
      }
    
      filename = "CLOUDBUILD_YAML_PATH"
    
      substitutions = {
        _GCS_WORKDIR               = "gs://STAGING_BUCKET/workdir/"
        _IMAGE_BUILDER_CONFIG_PATH = "RECIPE_PATH"
        _SERVICE_ACCOUNT           = "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL"
      }
    }
    

    Ersetzen Sie Folgendes:

    • TRIGGER_NAME: der Name für Ihren Trigger, z. B. git-push-custom-os-builder.
    • PROJECT_ID: Ihre Projekt-ID.
    • REGION: die Cloud de Confiance Region, in der Ihre Repository-Verbindung gehostet wird, z. B. us-central1.
    • CONNECTION_NAME: der Name Ihrer Developer Connect-Verbindung, z. B. github-connection.
    • REPO_NAME: Der Name des verknüpften Git-Repositorys.
    • CLOUDBUILD_YAML_PATH: der relative Pfad zu cloudbuild.yaml in Ihrem lokalen Verzeichnis.
    • STAGING_BUCKET: Name Ihres Cloud Storage-Staging-Buckets.
    • RECIPE_PATH: der relative Pfad zu imagebuilder.yaml in Ihrem Repository.
    • SERVICE_ACCOUNT_EMAIL: die E-Mail-Adresse Ihres Build-Dienstkontos.
  2. Stellen Sie die aktualisierte Terraform-Konfiguration bereit:

    terraform plan
    terraform apply
    

    Die vollständige Struktur des Terraform-Infrastrukturprojekts mit mehreren Dateien finden Sie unter Pipelines mit Terraform erstellen und verwalten.

Nächste Schritte