Pode usar um acionador do Cloud Build para iniciar automaticamente uma compilação e implementar um fluxo de trabalho a partir de um repositório Git. Pode configurar o acionador para implementar o fluxo de trabalho em qualquer alteração ao repositório de origem ou implementar o fluxo de trabalho apenas quando a alteração corresponder a critérios específicos.
Esta abordagem pode ajudar a gerir o ciclo de vida da implementação. Por exemplo, pode implementar alterações num fluxo de trabalho num ambiente de preparação, executar testes nesse ambiente e, em seguida, implementar gradualmente estas alterações no ambiente de produção.
Antes de começar
Estas instruções pressupõem que tem a
função de editor do Cloud Build
(roles/cloudbuild.builds.editor
) no seu Google Cloud projeto para poder
criar acionadores. Também precisa de um fluxo de trabalho num repositório de origem, como o
GitHub ou o Bitbucket.
Consola
Ative as APIs Cloud Build e Workflows.
Conceda a função de administrador dos fluxos de trabalho (
roles/workflows.admin
) à conta de serviço do Cloud Build:Na Google Cloud consola, aceda à página IAM.
Selecione o seu projeto.
Na linha da conta de serviço do Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
), clique em Editar principal.Clique em
Adicionar outra função.Na lista Função, selecione a função Administrador de fluxos de trabalho.
Clique em Guardar.
Conceda a função de utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço predefinida do Compute Engine à conta de serviço do Cloud Build. Quando ativa a API Compute Engine, a conta de serviço predefinida do Compute Engine éPROJECT_NUMBER-compute@developer.gserviceaccount.com
.Na Google Cloud consola, aceda à página Contas de serviço.
Selecione o seu projeto.
Clique no endereço de email da conta de serviço predefinida do Compute Engine (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Clique no separador Autorizações.
Clique no botão
Conceder acesso.Para adicionar um novo principal, introduza o endereço de email da sua conta de serviço (
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
).Na lista Selecionar uma função, selecione a função Contas de serviço > Utilizador da conta de serviço.
Clique em Guardar.
gcloud
Ative as APIs Cloud Build e Workflows.
gcloud services enable cloudbuild.googleapis.com \ workflows.googleapis.com
Conceda a função de administrador dos fluxos de trabalho (
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 seu Google Cloud projeto.Conceda a função de utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço predefinida do Compute Engine à conta de serviço do Cloud Build. Quando ativa a API Compute Engine, a conta de serviço predefinida do Compute Engine é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
Faça a ligação ao repositório de origem
Tem de associar o Cloud Build ao seu repositório de origem para que o Cloud Build possa automatizar compilações em resposta a eventos que ocorrem no repositório.
Conclua os passos seguintes para estabelecer ligação ao GitHub ou ao Bitbucket:
Na Google Cloud consola, aceda à página Triggers do Cloud Build:
Se necessário, selecione o projeto e clique em Abrir.
Na lista Região, selecione a região onde quer criar o acionador.
Clique em Associar repositório.
Selecione o repositório de origem onde armazenou o código fonte.
Por exemplo: GitHub (app GitHub do Cloud Build)
Clique em Continuar.
Autentique-se no repositório de origem com o seu nome de utilizador e palavra-passe.
Se estiver a iniciar sessão no GitHub, é-lhe pedido que autorize a app GitHub do Google Cloud Build a aceder à sua conta do GitHub para continuar.
Na lista de repositórios disponíveis, selecione o repositório pretendido e, de seguida, clique em OK.
Para repositórios externos, como o GitHub e o Bitbucket, tem de ter autorizações ao nível do proprietário para o Google Cloud projeto no qual está a trabalhar.
Leia a exclusão de responsabilidade e selecione a caixa de verificação junto à mesma para indicar que consente com os termos.
Clique em Ligar.
Para continuar a criar um acionador de compilação para automatizar as compilações do código-fonte no repositório, clique em Criar um acionador. Caso contrário, clique em Concluído.
Crie um ficheiro de configuração do Cloud Build
Um ficheiro de configuração de compilação define os campos necessários quando usa um acionador de compilação para iniciar uma compilação. Crie o ficheiro de configuração no diretório raiz do projeto e escreva-o com YAML ou JSON.
Por exemplo, o ficheiro de configuração seguinte implementa e executa um fluxo de trabalho de teste e, em seguida, usa um script para verificar o resultado. Se o teste for aprovado, o fluxo de trabalho é implementado:
As $BRANCH_NAME
e as $SHORT_SHA
variáveis de substituição
são preenchidas pelo Cloud Build quando uma compilação é acionada a partir de um repositório
Git. Representam o nome da sua ramificação e os primeiros sete carateres do ID de confirmação associado à sua compilação, respetivamente.
A variável de substituição $_WORKFLOW_NAME
permite reutilizar um ficheiro de configuração com diferentes valores de variáveis. Pode especificar o respetivo valor quando cria o acionador de compilação.
Para mais informações, consulte o artigo Crie um ficheiro de configuração de compilação.
Crie um acionador de versão
Pode automatizar a implementação do seu fluxo de trabalho criando um acionador do Cloud Build.
Para criar um acionador de compilação para o ficheiro de configuração na secção anterior:
Na Google Cloud consola, aceda à página Cloud Build Triggers:
Clique em Criar acionador.
No campo Nome, introduza um nome para o acionador.
Para Evento, selecione o evento para invocar o acionador.
Por exemplo: Enviar para um ramo
Em Origem, selecione o repositório e o nome da ramificação ou da etiqueta que vai iniciar o acionador. Pode usar uma expressão regular para especificar uma correspondência com um ramo ou uma etiqueta.
Por exemplo:
GoogleCloudPlatform/workflows-demos
(repositório) e^main$|^staging$
(corresponde aos ramosmain
estaging
)Expanda a secção Mostrar filtros de ficheiros incluídos e ignorados e especifique o seu fluxo de trabalho como um ficheiro incluído para que, quando for alterado, seja invocado um processo de compilação.
Por exemplo:
gitops/workflow.yaml
Para Configuração, selecione Ficheiro de configuração do Cloud Build (YAML ou JSON) como o tipo e Repositório como a localização.
No campo Localização do ficheiro de configuração do Cloud Build, especifique a localização do ficheiro.
Por exemplo:
gitops/cloudbuild.yaml
Opcionalmente, 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 guardar o acionador de compilação, clique em Criar.
Quando são enviadas alterações para um fluxo de trabalho no ramo especificado do repositório Git, o Cloud Build aciona automaticamente a implementação do fluxo de trabalho.
Para mais informações, consulte o artigo Crie e faça a gestão de acionadores de compilação.
Teste o acionador de versão
Pode testar o acionador de compilação e o ficheiro de configuração das secções anteriores.
No ramo
staging
do repositório Git, editeworkflow.yaml
e altereHello World
paraBye World
:Consolide e envie a alteração para o ramo
staging
.git add workflow.yaml git commit -m "Update workflow.yaml in staging" git push
O acionador do Cloud Build é executado e inicia uma compilação.
Para confirmar o êxito da compilação, na Google Cloud consola, aceda à página Histórico de compilações:
Após a conclusão de uma compilação, o Cloud Build fornece um estado geral para a compilação e para cada passo de compilação individual. Para mais informações, consulte o artigo Veja os resultados da compilação.
Para confirmar que um fluxo de trabalho de preparação está implementado, na Google Cloud consola, aceda à página Fluxos de trabalho:
Deve ver um fluxo de trabalho com o nome
workflows-gitops-staging
.Para implementar o fluxo de trabalho de preparação em produção, sincronize o ramo
staging
com o ramomain
:git checkout main git merge staging git push
Tenha em atenção que, uma vez que
test-main.sh
está à espera deHello World
no resultado do fluxo de trabalho, a compilação falha:Para implementar com êxito um fluxo de trabalho de produção, no ramo
staging
, edite novamenteworkflow.yaml
e altere a string novamente paraHello World
.Confirme e envie a alteração para o ramo
staging
e, em seguida, sincronize o ramostaging
com o ramomain
.Para confirmar que um fluxo de trabalho de produção está implementado, na Google Cloud consola, aceda à página Fluxos de trabalho:
Deve ver um fluxo de trabalho com o nome
workflows-gitops-main
.
O que se segue?
- Saiba mais sobre o Cloud Build.
- Saiba como resolver problemas de erros de compilação.
- Saiba como resolver problemas de fluxos de trabalho.