Automatizzare le build in base agli eventi del repository

Puoi configurare pipeline Image Builder automatizzate che vengono eseguite ogni volta che esegui il push delle modifiche alla configurazione nel repository Git, ad esempio il push in main. L'automazione delle build sugli eventi del repository garantisce che Cloud Build convalida, compila e pubblica immediatamente le immagini del sistema operativo personalizzate in Compute Engine e Artifact Registry dopo la revisione del codice o l'unione.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare trigger di eventi del repository, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Configurare l'automazione del repository

Puoi configurare i trigger di eventi del repository utilizzando gcloud CLI o Terraform. Seleziona una delle seguenti schede per configurare i trigger del repository:

gcloud

Puoi creare un trigger del repository automatizzato utilizzando il comando gcloud builds triggers create e puntando direttamente al link del repository di seconda generazione connesso (--repository).

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

Sostituisci quanto segue:

  • TRIGGER_NAME: il nome del trigger, ad esempio git-push-custom-os-builder.
  • PROJECT_ID: il tuo ID progetto.
  • REGION: la regione in cui è ospitata la connessione al repository e in cui viene eseguito il job della pipeline di personalizzazione delle immagini, ad esempio us-central1.
  • CONNECTION_NAME: il nome della connessione Developer Connect, ad esempio github-connection.
  • REPO_NAME: il nome del repository Git collegato.
  • CLOUDBUILD_YAML_PATH: il percorso relativo a cloudbuild.yaml nella directory locale.
  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email esatto delaccount di serviziot di build.
  • STAGING_BUCKET: il nome del bucket di staging workdir di Cloud Storage.
  • RECIPE_PATH: il percorso relativo a imagebuilder.yaml nel repository.

Terraform

Per configurare un trigger del repository automatizzato utilizzando Terraform, completa i passaggi seguenti:

  1. Aggiungi la risorsa di attivazione al file di configurazione main.tf:

    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"
      }
    }
    

    Sostituisci quanto segue:

    • TRIGGER_NAME: il nome del trigger, ad esempio git-push-custom-os-builder.
    • PROJECT_ID: il tuo ID progetto.
    • REGION: la Cloud de Confiance regione in cui è ospitata la connessione al repository, ad esempio us-central1.
    • CONNECTION_NAME: il nome della connessione Developer Connect, ad esempio github-connection.
    • REPO_NAME: il nome del repository Git collegato.
    • CLOUDBUILD_YAML_PATH: il percorso relativo a cloudbuild.yaml nella directory locale.
    • STAGING_BUCKET: il nome del bucket di staging di Cloud Storage.
    • RECIPE_PATH: il percorso relativo a imagebuilder.yaml nel repository.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di serviziot di build.
  2. Esegui il deployment della configurazione Terraform aggiornata:

    terraform plan
    terraform apply
    

    Per esaminare la struttura completa del progetto di infrastruttura Terraform multiformato, consulta Creare e gestire pipeline utilizzando Terraform.

Passaggi successivi