O Cloud Build pode enviar-lhe notificações para canais selecionados sobre atualizações ao estado da compilação. Além dos notificadores mantidos pelo Cloud Build, como o Slack ou o SMTP, também pode usar a biblioteca fornecida no repositório cloud-build-notifiers para criar o seu próprio notificador.
Esta página explica como pode criar o seu próprio notificador.
Antes de começar
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Instale a linguagem de programação Go.
Instale a CLI do Google Cloud.
A configurar o
Abra uma janela de terminal na máquina.
Clone e navegue para o repositório cloud-build-notifiers:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersAdicione um diretório para o seu próprio notificador e navegue até ele, onde DIRECTORY_NAME é o nome do seu diretório:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAMEInicialize os módulos Go no novo diretório, em que DIRECTORY_NAME é o nome do novo diretório:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAMEAgora, deve ver um ficheiro
go.modno seu diretório.Adicione a seguinte linha ao ficheiro
go.modpara garantir que está a usar a versão mais recente dos notificadores:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
As suas dependências estão agora configuradas e tem tudo pronto para criar o seu próprio notificador.
Criar o seu próprio notificador
O cloud-build-notifiers contém um diretório lib/notifiers. No diretório lib/notifiers, é apresentado um ficheiro denominado notifier.go. Este ficheiro contém a estrutura que pode usar para criar o seu próprio notificador.
Tem de definir dois métodos para criar um notificador no ficheiro principal.
No novo diretório, crie um ficheiro denominado
main.go.Em
main.go, importe a framework da biblioteca de notificadores e quaisquer outras dependências:Defina um método principal para o seu notificador. Neste exemplo,
loggeré o nome do notificador:O método
mainusa o métodoMaindefinido no ficheironotifier.go, que é usado para configurar ficheiros binários de notificação.Defina uma struct para o seu notificador, onde vai definir as variáveis para a sua interface. Neste exemplo,
loggeré o nome do notificador:Adicione a funcionalidade de notificação. A interface do notificador é definida por dois métodos:
SetUp: o métodoSetUpaceita uma configuração, obtém segredos e extrai filtros especificados da configuração e armazena-os como um predicado da linguagem de expressão comum que pode ser usado para enviar notificações. Para saber mais sobre a CEL, consulte ocel-specrepositório.SendNotification: O métodoSendNotificationé o que é usado para enviar notificações para o canal ou o serviço selecionado.A definição do notificador está disponível em
notifier.goe na documentação do Go.No exemplo seguinte, a interface do notificador é definida através do método
SetUpeSendNotificationpara imprimir registos de compilação, comloggercomo o nome do notificador:O ficheiro
main.gofinal deve ser semelhante ao seguinte ficheiro. Neste exemplo,loggeré usado como o nome do notificador.
Em seguida, configure o notificador.
Configure as notificações
Escreva um ficheiro de configuração do notificador para configurar o notificador e filtrar eventos de compilação:
No ficheiro de configuração do notificador de exemplo seguinte, o campo
filterusa CEL com a variável disponível,build, para filtrar eventos de compilação com um estadoSUCCESS:Onde:
logging-sampleé o nome do remetente da notificação.
Para ver campos adicionais pelos quais pode filtrar, consulte o recurso Build. Para ver exemplos de filtragem adicionais, consulte o artigo Usar o IEC para filtrar eventos de compilação.
Carregue o ficheiro de configuração do notificador para um contentor do Cloud Storage:
Se não tiver um contentor do Cloud Storage, execute o seguinte comando para criar um contentor, em que BUCKET_NAME é o nome que quer dar ao contentor, sujeito aos requisitos de nomenclatura.
gcloud storage buckets create gs://BUCKET_NAME/Carregue o ficheiro de configuração do notificador para o seu contentor:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAMEOnde:
BUCKET_NAMEé o nome do seu contentor.CONFIG_FILE_NAMEé o nome do ficheiro de configuração.
Crie e implemente o seu notificador:
Crie um ficheiro Docker para o
logging-sample:Crie e implemente o notificador com o seguinte ficheiro
cloudbuild.yaml.Onde:
_CONFIG_PATHé o caminho para a configuração do seu notificador, comogs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
Para executar o comando
cloudbuild.yaml, transmita o caminho do notificador como uma variável de substituição.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEConceda autorizações do Pub/Sub para criar tokens de autenticação no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorOnde:
PROJECT_IDé o ID do seu Google Cloud projeto.PROJECT_NUMBERé o número do seu Google Cloud projeto.
Crie uma conta de serviço para representar a identidade da sua subscrição do Pub/Sub:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"Pode usar
cloud-run-pubsub-invokerou usar um nome único no seu projeto Google Cloud .Conceda à conta de serviço
cloud-run-pubsub-invokera autorizaçãoInvokerdo Cloud Run:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invokerOnde:
SERVICE_NAMEé o nome do serviço do Cloud Run para o qual está a implementar a imagem.PROJECT_IDé o ID do seu Google Cloud projeto.
Crie o tópico
cloud-buildspara receber mensagens de atualização de compilação para o seu notificador:gcloud pubsub topics create cloud-buildsTambém pode definir um nome de tópico personalizado no ficheiro de configuração de compilação para que as mensagens sejam enviadas para o tópico personalizado. Neste caso, criaria um tópico com o mesmo nome de tópico personalizado:
gcloud pubsub topics create topic-namePara mais informações, consulte o artigo Tópicos do Pub/Sub para notificações de compilação.
Crie um subscritor de envio do Pub/Sub para o seu notificador:
gcloud pubsub subscriptions create subscriber-id \ --topic=cloud-builds \ --push-endpoint=service-url \ --push-auth-service-account=cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.comOnde:
subscriber-idé o nome que quer atribuir à sua subscrição.service-urlé o URL gerado pelo Cloud Run para o seu novo serviço.project-idé o ID do seu Google Cloud projeto.
As notificações para o seu projeto do Cloud Build estão agora configuradas. Da próxima vez que invocar uma compilação, recebe uma notificação no seu canal se a compilação corresponder ao filtro que configurou.
Notificações de teste
Para testar as notificações do exemplo usado neste guia, pode
invocar uma compilação executando o comando gcloud builds submit.
No exemplo seguinte, especificamos success.yaml como o caminho de configuração. A execução deste comando deve resultar numa compilação bem-sucedida mínima. Também
deve conseguir ver um resultado dos registos de compilação.
gcloud builds submit --no-source --config=success.yaml
Onde success.yaml está:
steps:
- name: busybox
args: ["true"]
No exemplo seguinte, especificamos failure.yaml como o caminho de configuração. A execução deste comando deve resultar numa compilação com falhas. Em vez de ver um resultado dos registos de compilação, vê um resultado a informar que não houve correspondência para os filtros CEL especificados na sua origem.
gcloud builds submit --no-source --config=failure.yaml
Onde failure.yaml está:
steps:
- name: busybox
args: ["false"]
Se criou um notificador configurado para realizar outra tarefa que não seja registar a saída nos registos de serviço do Cloud Run, também pode executar o comando gcloud builds submit para testar as suas notificações.
Para examinar os erros associados à sua compilação, verifique os registos do Cloud Run para o seu serviço. Para saber mais, consulte o artigo
Ver registos no Cloud Run.
O que se segue?
- Saiba mais sobre os notificadores do Cloud Build.
- Saiba como subscrever notificações de compilação.