Nesta página, explicamos como usar o Cloud Build para criar e testar aplicativos Go, fazer upload de artefatos para o Artifact Registry, gerar informações de procedência e salvar registros de teste no Cloud Storage.
Antes de começar
As instruções nesta página pressupõem que você conhece o Go. Além disso:
-
Ative as APIs Cloud Build, Cloud Run e Artifact Registry.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis. - Para executar os comandos
gcloudnesta página, instale a Google Cloud CLI. - Prepare seu projeto em Go.
- Tenha um repositório Go no Artifact Registry. Se você não tiver um, crie um novo repositório.
- Se você quiser armazenar registros de teste no Cloud Storage, então crie um bucket no Cloud Storage.
- Confira se você conhece o ID da conta de serviço do ambiente de execução do Cloud Run.
Criar uma conta de serviço personalizada do Cloud Build
Crie uma conta de serviço personalizada do Cloud Build executando o seguinte comando na Google Cloud CLI:
gcloud iam service-accounts create cloud-build-go \
--description="Build and test Go applications" \
--display-name="Cloud Build Go" \
--project="PROJECT_NAME"
Você usará essa conta de serviço para criar e testar seu aplicativo Go.
configure as permissões do IAM
Para configurar sua nova conta de serviço com as permissões necessárias para criar e implantar aplicativos Go, faça o seguinte:
-
No Google Cloud console, acesse a settings página Permissões do Cloud Build:
Acesse o menu Conta de serviço e selecione sua conta de serviço
cloud-build-go.Defina o status dos seguintes papéis como Ativado:
- Administrador do Cloud Run (
roles/run.admin): permite que o Cloud Build implante novos serviços no Cloud Run.- No painel "Atribuir papel de usuário da conta de serviço", selecione a conta de serviço do ambiente de execução e clique em Conceder permissão. Essa configuração permite que sua conta de serviço personalizada do Cloud Build represente a conta de serviço do ambiente de execução ao interagir com o serviço gerenciado do Cloud Run. Para mais informações, consulte Configurar a identidade temporária de conta de serviço do Cloud Build para serviços gerenciados.
- Administrador do Storage (
roles/storage.admin): permite a leitura e gravação no Cloud Storage. - Gravador do Artifact Registry (
roles/artifactregistry.writer): permite extrair imagens do Artifact Registry e gravar nele. - Gravador de registros (
roles/logging.logWriter): permite que as entradas de registro sejam gravadas no Cloud Logging. - Editor do Cloud Build (
roles/cloudbuild.builds.editor): permite que sua conta de serviço execute builds.
- Administrador do Cloud Run (
Configurar builds do Go
A imagem pública
golang do Docker Hub
é compatível com a criação de módulos do Go.
Usar essa imagem como uma etapa de build no arquivo de configuração do Cloud Build permite invocar comandos go na imagem. Os argumentos inseridos nessa etapa de build
são transmitidos diretamente para a ferramenta golang, o que permite executar qualquer comando go
nessa imagem.
Esta seção mostra como criar um arquivo de configuração de build de exemplo para um app Go do repositório Git cloud-build-samples. O arquivo de configuração do build tem etapas para criar o app, adicionar testes de unidade e, depois que os testes forem aprovados, implantar o app.
Para criar o aplicativo Go de exemplo:
Configurar testes de unidade: se você tiver definido testes de unidade no aplicativo, poderá configurar o Cloud Build para executar os testes adicionando os seguintes campos em uma etapa de build:
name: defina o valor desse campo comogolangpara usar a imagem golang do Docker Hub na tarefa.entrypoint: defina o valor desse campo como/bin/bash. Isso permite que você execute comandos bash de várias linhas diretamente na etapa de build.args: o campoargsde uma etapa de build recebe uma lista de argumentos e os passa para a imagem referenciada pelo camponame. No exemplo a seguir, o campoargsusa os argumentos para:- Executar o formatador de registros de teste para fazer o download da saída do registro de teste.
- Imprimir a saída do registro.
- Salvando os resultados do teste em
sponge.log. Resultados em
sponge.logpara um arquivo XML JUNIT. O nome do arquivo XML JUNIT é construído usando a versão curta do ID de confirmação associado ao seu build. Uma próxima etapa de build salvará os registros nesse arquivo no Cloud Storage.steps: # Run tests and save to file - name: golang:1.23 entrypoint: /bin/bash args: - -c - | go install github.com/jstemmer/go-junit-report/v2@latest 2>&1 go test -timeout 1m -v ./... | /go/bin/go-junit-report -set-exit-code -iocopy -out ${SHORT_SHA}_test_log.xml
Fazer upload para o Artifact Registry: no arquivo de configuração, use o campo
goModulespara especificar o caminho do aplicativo e o repositório Go no Artifact Registry:# Upload Go module to artifact registry artifacts: goModules: - repositoryName: 'repositoryName' repositoryLocation: 'location' repositoryProjectId: 'projectId' sourcePath: 'sourcePath' modulePath: 'appPath' moduleVersion: 'version'Substitua os seguintes valores:
- repositoryName: o nome do repositório Go no Artifact Registry.
- location: o local do repositório no Artifact Registry.
- projectId: o ID do Google Cloud projeto que contém o repositório do Artifact Registry.
- sourcePath: o caminho para o arquivo
go.modno espaço de trabalho do build. - appPath: o caminho para o aplicativo empacotado.
- version: o número da versão do aplicativo, formatado em números e pontos como
v1.0.1.
Opcional: ativar a geração de procedência
O Cloud Build pode gerar metadados de procedência de build de Níveis da cadeia de suprimentos para artefatos de software (SLSA) verificáveis para ajudar a proteger seu pipeline de integração contínua.
Para ativar a geração de procedência, adicione
requestedVerifyOption: VERIFIEDà seçãooptionsno arquivo de configuração.Depois que o build for concluído, você poderá conferir os detalhes do repositório no Artifact Registry.
Também é possível conferir os metadados de procedência do build e validar a procedência.
Salvar registros de teste no Cloud Storage: é possível configurar o Cloud Build para armazenar todos os registros de teste no Cloud Storage especificando um local e um caminho do bucket existente para os registros de teste.
A etapa de build a seguir armazena os registros de teste que você salvou no arquivo XML JUNIT em um bucket do Cloud Storage:
# Save test logs to Google Cloud Storage artifacts: objects: location: gs://$_BUCKET_NAME/ paths: - ${SHORT_SHA}_test_log.xmlO snippet a seguir mostra o arquivo de configuração do build completo para as etapas anteriores:
steps: # Run tests and save to file - name: golang:1.23 entrypoint: /bin/bash args: - -c - | go install github.com/jstemmer/go-junit-report/v2@latest 2>&1 go test -timeout 1m -v ./... | /go/bin/go-junit-report -set-exit-code -iocopy -out ${SHORT_SHA}_test_log.xml # Store golang modules in Google Artifact Registry artifacts: goModules: - repositoryName: 'repositoryName' repositoryLocation: 'location' repositoryProjectId: 'projectId' sourcePath: 'sourcePath' modulePath: 'appPath' moduleVersion: 'version'Inicie o build usando a CLI gcloud ou crie um gatilho de build:
Google Cloud CLI
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml \
--substitutions=_AR_REPO_NAME="AR_REPO_NAME"
Gatilhos de compilação
Siga as etapas em Criar um gatilho de build. No campo Variáveis de substituição, você também precisa fornecer o nome do repositório do Artifact Registry e o nome do bucket do Cloud Storage para registros de teste.
A seguir
- Saiba como realizar implantações azul-verde no Compute Engine.
- Saiba como resolver erros de build.