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.
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-notifiers
Adicione 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_NAME
Inicialize 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_NAME
Agora, deve ver um ficheiro
go.mod
no seu diretório.Adicione a seguinte linha ao ficheiro
go.mod
para 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
main
usa o métodoMain
definido 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étodoSetUp
aceita 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-spec
repositó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.go
e na documentação do Go.No exemplo seguinte, a interface do notificador é definida através do método
SetUp
eSendNotification
para imprimir registos de compilação, comlogger
como o nome do notificador:O ficheiro
main.go
final 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 do exemplo seguinte, o campo
filter
usa 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_NAME
Onde:
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_NAME
Conceda 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.serviceAccountTokenCreator
Onde:
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-invoker
ou usar um nome único no seu projeto Google Cloud .Conceda à conta de serviço
cloud-run-pubsub-invoker
a autorizaçãoInvoker
do 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.invoker
Onde:
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-builds
para receber mensagens de atualização de compilação para o seu notificador:gcloud pubsub topics create cloud-builds
També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-name
Para 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.com
Onde:
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
é:
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
é:
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.