Automatiza las compilaciones en eventos del repositorio

Puedes configurar canalizaciones automatizadas de Image Builder que se ejecuten cada vez que envíes cambios de configuración a tu repositorio de Git, como cuando envías a main. La automatización de las compilaciones en eventos del repositorio garantiza que Cloud Build valide, compile y publique de inmediato tus imágenes de SO personalizadas en Compute Engine y Artifact Registry tras la revisión de código o la combinación.

Antes de comenzar

Roles obligatorios

Para obtener los permisos que necesitas para crear activadores de eventos del repositorio, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Configura la automatización del repositorio

Puedes configurar activadores de eventos del repositorio con gcloud CLI o Terraform. Selecciona una de las siguientes pestañas para configurar los activadores del repositorio:

gcloud

Puedes crear un activador de repositorio automatizado con el comando gcloud builds triggers create y apuntar directamente al vínculo de tu repositorio de 2ª gen. conectado (--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

Reemplaza lo siguiente:

  • TRIGGER_NAME: Es el nombre del activador, por ejemplo, git-push-custom-os-builder.
  • PROJECT_ID: el ID de tu proyecto
  • REGION: Es la región en la que se aloja la conexión del repositorio y en la que se ejecuta el trabajo de la canalización de personalización de imágenes, por ejemplo, us-central1.
  • CONNECTION_NAME: Es el nombre de tu conexión de Developer Connect, por ejemplo, github-connection.
  • REPO_NAME: Es el nombre del repositorio de Git vinculado.
  • CLOUDBUILD_YAML_PATH: Es la ruta de acceso relativa a cloudbuild.yaml en tu directorio local.
  • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico exacta de tu cuenta de servicio de compilación
  • STAGING_BUCKET: Es el nombre de tu bucket de Cloud Storage de workdir.
  • RECIPE_PATH: Es la ruta de acceso relativa a imagebuilder.yaml en tu repositorio.

Terraform

Para configurar un activador de repositorio automatizado con Terraform, completa los siguientes pasos:

  1. Agrega el recurso de activación a tu archivo de configuración 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"
      }
    }
    

    Reemplaza lo siguiente:

    • TRIGGER_NAME: Es el nombre del activador, por ejemplo, git-push-custom-os-builder.
    • PROJECT_ID: el ID de tu proyecto
    • REGION: Es la región Cloud de Confiance en la que se aloja la conexión de tu repositorio, por ejemplo, us-central1.
    • CONNECTION_NAME: Es el nombre de tu conexión de Developer Connect, por ejemplo, github-connection.
    • REPO_NAME: Es el nombre del repositorio de Git vinculado.
    • CLOUDBUILD_YAML_PATH: Es la ruta de acceso relativa a cloudbuild.yaml en tu directorio local.
    • STAGING_BUCKET: Es el nombre de tu bucket de Cloud Storage de etapa de pruebas.
    • RECIPE_PATH: Es la ruta de acceso relativa a imagebuilder.yaml en tu repositorio.
    • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de tu cuenta de servicio de compilación
  2. Implementa la configuración de Terraform actualizada:

    terraform plan
    terraform apply
    

    Para revisar la estructura completa del proyecto de infraestructura de Terraform de varios archivos, consulta Crea y administra canalizaciones con Terraform.

¿Qué sigue?