É 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
- Conclua as etapas de configuração do ambiente em Preparar o ambiente.
- Se você pretende implantar seu pipeline usando o Terraform ou automatizar builds de um repositório, conecte
seu repositório do GitHub, GitLab ou Bitbucket usando
repositórios do Cloud Build (
2nd gen) ou links de conexão do Developer Connect. - Verifique se o repositório contém o
arquivo de orquestração
cloudbuild.yaml, o arquivo de receitaimagebuilder.yamle todos os scripts de build referenciados. - Se você planeja usar o Terraform, instale a CLI do Terraform versão 1.3 ou mais recente.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
-
Instale a CLI do Google Cloud.
-
Configure a CLI gcloud para usar sua identidade federada.
Para mais informações, consulte Fazer login na CLI gcloud com sua identidade federada.
-
Crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
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:
- Editor do Cloud Build (
roles/cloudbuild.builds.editor) - Usuário da conta de serviço (
roles/iam.serviceAccountUser)
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 paracloudbuild.yamlno 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çãoworkdirdo Cloud Storage.RECIPE_PATH: o caminho relativo paraimagebuilder.yamlno seu repositório.
Terraform
Para configurar um acionador de repositório automatizado usando o Terraform, siga estas etapas:
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 paracloudbuild.yamlno diretório local.STAGING_BUCKET: o nome do bucket de preparação do Cloud Storage.RECIPE_PATH: o caminho relativo paraimagebuilder.yamlno seu repositório.SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço de build.
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
- Saiba como programar builds de imagens personalizadas do SO periodicamente para aplicação de patch de segurança usando o Cloud Scheduler.
- Confira as ações de personalização compatíveis
(
Shell,FileCopy,UpdateKernelCommandLine,InstallGPU).