É possível usar um gatilho do Cloud Build para iniciar automaticamente uma compilação e implantar um fluxo de trabalho de um repositório Git. É possível configurar o gatilho para implantar seu fluxo de trabalho em qualquer alteração no repositório de origem ou implantar o fluxo de trabalho somente quando a alteração corresponder a critérios específicos.
Essa abordagem pode ajudar você a gerenciar o ciclo de vida da implantação. Por exemplo, é possível implantar alterações em um fluxo de trabalho em um ambiente de preparação, executar testes nesse ambiente e implementar essas alterações de forma incremental no ambiente de produção.
Antes de começar
Estas instruções pressupõem que você tenha o
papel Editor do Cloud Build
(roles/cloudbuild.builds.editor
) no projeto do Google Cloud para
criar gatilhos. Você também precisa de um fluxo de trabalho em um repositório de origem, como o
GitHub ou o Bitbucket.
Console
Ative as APIs Cloud Build e Workflows.
Conceda o papel de administrador do Workflows (
roles/workflows.admin
) à conta de serviço do Cloud Build:No console do Google Cloud, abra a página IAM.
Selecione o projeto.
Na linha da conta de serviço do Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
), clique em Editar principal.Clique em
Adicionar outro papel.Na lista Papel, selecione o papel Administrador do Workflows.
Clique em Salvar.
Conceda o papel de usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço padrão do Compute Engine à conta de serviço do Cloud Build. Se você ativar a API Compute Engine, a conta de serviço padrão do Compute Engine seráPROJECT_NUMBER-compute@developer.gserviceaccount.com
.No Console do Google Cloud, acesse a página Contas de serviço.
Selecione o projeto.
Clique no endereço de e-mail da conta de serviço padrão do Compute Engine (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Clique na guia Permissões.
Clique no botão
Conceder acesso.Para adicionar um novo principal, insira o endereço de e-mail da sua conta de serviço (
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
).Na lista Selecionar um papel, escolha o papel Contas de serviço > Usuário da conta de serviço.
Clique em Salvar.
gcloud
Ative as APIs Cloud Build e Workflows.
gcloud services enable cloudbuild.googleapis.com \ workflows.googleapis.com
Conceda o papel de administrador do Workflows (
roles/workflows.admin
) à conta de serviço do Cloud Build:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)') gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/workflows.admin
Substitua
PROJECT_ID
pelo ID do projeto do Google Cloud.Conceda o papel de usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço padrão do Compute Engine à conta de serviço do Cloud Build. Se você ativar a API Compute Engine, a conta de serviço padrão do Compute Engine seráPROJECT_NUMBER-compute@developer.gserviceaccount.com
.gcloud iam service-accounts add-iam-policy-binding \ $PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Conectar ao seu repositório de origem
Conecte o Cloud Build ao seu repositório de origem para que o Cloud Build possa automatizar os builds em resposta a eventos que acontecem nele.
Conclua as etapas a seguir para se conectar ao GitHub ou ao Bitbucket:
No console do Google Cloud, acesse a página Gatilhos do Cloud Build:
Se necessário, selecione o projeto e clique em Abrir.
Na lista Região, selecione a região em que você quer criar o gatilho.
Clique em Conectar repositório.
Selecione o repositório de origem em que você armazenou o código-fonte.
Por exemplo: GitHub (app GitHub do Cloud Build)
Clique em Continuar.
Autentique o repositório de origem com seu nome de usuário e senha.
Se você estiver fazendo login no GitHub, será necessário autorizar o app GitHub do Google Cloud Build a acessar sua conta do GitHub para prosseguir.
Na lista de repositórios disponíveis, selecione o repositório desejado e clique em OK.
Para repositórios externos, como GitHub e Bitbucket, você precisa de permissões de nível de proprietário para o projeto do Google Cloud em que está trabalhando.
Leia a exoneração de responsabilidade e marque a caixa de seleção ao lado para indicar que você concorda com os termos.
Clique em Conectar.
Para continuar criando um gatilho de compilação a fim de automatizar versões para o código-fonte no repositório, clique em Criar um gatilho. Caso contrário, clique em Concluído.
Criar um arquivo de configuração do Cloud Build
Um arquivo de configuração do build define os campos necessários ao usar um gatilho de compilação para iniciar uma versão. Crie o arquivo de configuração no diretório raiz do projeto e grave-o usando YAML ou JSON.
Por exemplo, o arquivo de configuração a seguir implanta e executa um fluxo de trabalho de teste e, em seguida, usa um script para verificar a saída. Se o teste for aprovado, o fluxo de trabalho será implantado:
As variáveis de substituição $BRANCH_NAME
e $SHORT_SHA
são preenchidas pelo Cloud Build quando um build é acionado por um repositório Git. Eles representam o nome da ramificação e os primeiros sete
caracteres do ID de confirmação associado ao build, respectivamente.
A variável de substituição $_WORKFLOW_NAME
permite reutilizar um arquivo de configuração com diferentes valores de variáveis. É possível especificar o valor dele ao criar o gatilho de compilação.
Para saber mais, consulte Criar um arquivo de configuração do build.
Criar um acionador de versão
Automatize a implantação do fluxo de trabalho criando um gatilho do Cloud Build.
Para criar um gatilho de compilação para o arquivo de configuração na seção anterior, faça o seguinte:
No console do Google Cloud, acesse a página Gatilhos do Cloud Build:
Clique em Criar gatilho.
No campo Nome, insira um nome para o gatilho.
Em Evento, selecione o evento para invocar seu acionador.
Por exemplo: Enviar por push para uma ramificação
Em Origem, selecione seu repositório e o nome da ramificação ou da tag que iniciará o gatilho. Use uma expressão regular para especificar uma correspondência a uma ramificação ou tag.
Por exemplo:
GoogleCloudPlatform/workflows-demos
(repositório) e^main$|^staging$
(corresponde às ramificaçõesmain
estaging
).Expanda a seção Mostrar filtros de arquivos incluídos e ignorados e especifique seu fluxo de trabalho como um arquivo incluído para que, quando ele for alterado, um build seja invocado.
Por exemplo:
gitops/workflow.yaml
Em Configuração, selecione Arquivo de configuração do Cloud Build (YAML ou JSON) como tipo e Repositório como local.
No campo Local do arquivo de configuração do Cloud Build, especifique o local do seu arquivo.
Por exemplo:
gitops/cloudbuild.yaml
Para adicionar uma variável de substituição, clique em Adicionar variável e especifique uma combinação de chave e valor.
Por exemplo:
_WORKFLOW_NAME
(variável) eworkflows-gitops
(valor)Para salvar o gatilho de compilação, clique em Criar.
Quando as alterações forem enviadas para um fluxo de trabalho na ramificação especificada do repositório do Git, ela acionará automaticamente o Cloud Build para implantar o fluxo de trabalho.
Para mais informações, consulte Criar e gerenciar gatilhos de compilação.
Testar o gatilho de compilação
Você pode testar o gatilho de compilação e o arquivo de configuração das seções anteriores.
Na ramificação
staging
do repositório Git, editeworkflow.yaml
e altereHello World
paraBye World
:Confirme e envie a alteração para a ramificação
staging
.git add workflow.yaml git commit -m "Update workflow.yaml in staging" git push
O gatilho do Cloud Build é executado e inicia um build.
Para confirmar o sucesso da versão, acesse a página Histórico da versão no console do Google Cloud:
Após a conclusão de uma criação, o Cloud Build fornece um status geral para a versão e para cada etapa de criação individual. Para saber mais, consulte Ver os resultados do build.
Para confirmar se um fluxo de trabalho de preparo foi implantado, no console do Google Cloud, acesse a página Fluxos de trabalho:
Você verá um fluxo de trabalho chamado
workflows-gitops-staging
listado.Para implantar o fluxo de trabalho de preparo na produção, mescle a ramificação
staging
com a ramificaçãomain
:git checkout main git merge staging git push
Observe que, como
test-main.sh
está esperandoHello World
na saída do fluxo de trabalho, o build falhará:Para implantar um fluxo de trabalho de produção, na ramificação
staging
, editeworkflow.yaml
novamente e altere a string de volta paraHello World
.Confirme e envie a alteração para a ramificação
staging
e, em seguida, mescle a ramificaçãostaging
com a ramificaçãomain
.Para confirmar se um fluxo de trabalho de produção foi implantado, acesse a página Fluxos de trabalho no console do Google Cloud:
Você verá um fluxo de trabalho chamado
workflows-gitops-main
listado.
A seguir
- Saiba mais sobre o Cloud Build.
- Saiba como resolver erros de build.
- Saiba como resolver problemas com o Workflows.