Automatiser les builds sur les événements de dépôt

Vous pouvez configurer des pipelines Image Builder automatisés qui s'exécutent chaque fois que vous transférez des modifications de configuration vers votre dépôt Git, par exemple vers main. L'automatisation des compilations sur les événements de dépôt garantit que Cloud Build valide, compile et publie immédiatement vos images d'OS personnalisées dans Compute Engine et Artifact Registry après la revue de code ou la fusion.

Avant de commencer

Rôles requis

Pour obtenir les autorisations nécessaires pour créer des déclencheurs d'événements de dépôt, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Configurer l'automatisation des dépôts

Vous pouvez configurer des déclencheurs d'événements de dépôt à l'aide de la gcloud CLI ou de Terraform. Sélectionnez l'un des onglets suivants pour configurer les déclencheurs de dépôt :

gcloud

Vous pouvez créer un déclencheur de dépôt automatisé à l'aide de la commande gcloud builds triggers create et en pointant directement vers le lien de votre dépôt de deuxième génération connecté (--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

Remplacez les éléments suivants :

  • TRIGGER_NAME : nom de votre déclencheur, par exemple git-push-custom-os-builder.
  • PROJECT_ID : ID de votre projet.
  • REGION : région dans laquelle votre connexion au dépôt est hébergée et dans laquelle le job de pipeline de personnalisation d'image est exécuté, par exemple us-central1.
  • CONNECTION_NAME : nom de votre connexion Developer Connect, par exemple github-connection.
  • REPO_NAME : nom du dépôt Git associé.
  • CLOUDBUILD_YAML_PATH : chemin relatif vers cloudbuild.yaml dans votre répertoire local.
  • SERVICE_ACCOUNT_EMAIL : adresse e-mail exacte de votre compte de service de compilation.
  • STAGING_BUCKET : nom de votre bucket workdir Cloud Storage intermédiaire.
  • RECIPE_PATH : chemin relatif vers imagebuilder.yaml dans votre dépôt.

Terraform

Pour configurer un déclencheur de dépôt automatisé à l'aide de Terraform, procédez comme suit :

  1. Ajoutez la ressource de déclencheur à votre fichier de configuration 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"
      }
    }
    

    Remplacez les éléments suivants :

    • TRIGGER_NAME : nom de votre déclencheur, par exemple git-push-custom-os-builder.
    • PROJECT_ID : ID de votre projet.
    • REGION : région Cloud de Confiance où votre connexion au dépôt est hébergée, par exemple us-central1.
    • CONNECTION_NAME : nom de votre connexion Developer Connect, par exemple github-connection.
    • REPO_NAME : nom du dépôt Git associé.
    • CLOUDBUILD_YAML_PATH : chemin relatif vers cloudbuild.yaml dans votre répertoire local.
    • STAGING_BUCKET : nom de votre bucket Cloud Storage intermédiaire.
    • RECIPE_PATH : chemin relatif vers imagebuilder.yaml dans votre dépôt.
    • SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service de compilation.
  2. Déployez la configuration Terraform mise à jour :

    terraform plan
    terraform apply
    

    Pour examiner la structure complète du projet d'infrastructure Terraform multifichier, consultez Créer et gérer des pipelines à l'aide de Terraform.

Étapes suivantes