Automatizar builds em eventos do repositório

É possível configurar pipelines automatizados do Image Builder que são executados sempre que você envia mudanças de configuração para o repositório Git, como o envio para main. A automação de builds em eventos de repositório garante que o Cloud Build valide, crie e publique imediatamente suas imagens de SO personalizadas no Compute Engine e no Artifact Registry após a revisão de código ou mesclagem.

Antes de começar

Funções exigidas

Para receber as permissões necessárias e criar gatilhos de eventos do repositório, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Configurar a automação do repositório

É possível configurar gatilhos de eventos do repositório usando a CLI gcloud ou o Terraform. Selecione uma das seguintes guias para configurar gatilhos de repositório:

gcloud

É possível criar um gatilho de repositório automatizado usando o comando gcloud builds triggers create e apontando diretamente para o link do repositório conectado de segunda geração (--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

Substitua:

  • TRIGGER_NAME: o nome do gatilho, por exemplo, git-push-custom-os-builder.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que a conexão do repositório está hospedada e onde o job do pipeline de personalização de imagem é executado, por exemplo, us-central1.
  • CONNECTION_NAME: o nome da sua conexão do Developer Connect, por exemplo, github-connection.
  • REPO_NAME: o nome do repositório Git vinculado.
  • CLOUDBUILD_YAML_PATH: o caminho relativo para cloudbuild.yaml no diretório local.
  • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail exato da sua conta de serviço de build.
  • STAGING_BUCKET: o nome do bucket de preparação workdir do Cloud Storage.
  • RECIPE_PATH: o caminho relativo para imagebuilder.yaml no seu repositório.

Terraform

Para configurar um acionador de repositório automatizado usando o Terraform, siga estas etapas:

  1. Adicione o recurso de acionador ao arquivo de configuração 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"
      }
    }
    

    Substitua:

    • TRIGGER_NAME: o nome do gatilho. Por exemplo, git-push-custom-os-builder.
    • PROJECT_ID: o ID do projeto.
    • REGION: a região Cloud de Confiance em que sua conexão de repositório está hospedada, por exemplo, us-central1.
    • CONNECTION_NAME: o nome da sua conexão do Developer Connect, por exemplo, github-connection.
    • REPO_NAME: o nome do repositório Git vinculado.
    • CLOUDBUILD_YAML_PATH: o caminho relativo para cloudbuild.yaml no diretório local.
    • STAGING_BUCKET: o nome do bucket de preparação do Cloud Storage.
    • RECIPE_PATH: o caminho relativo para imagebuilder.yaml no seu repositório.
    • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço de build.
  2. Implante a configuração atualizada do Terraform:

    terraform plan
    terraform apply
    

    Para revisar a estrutura completa do projeto de infraestrutura do Terraform com vários arquivos, consulte Criar e gerenciar pipelines usando o Terraform.

A seguir