Como automatizar a configuração de notificações

É possível configurar o Cloud Build para enviar notificações sobre builds para o Slack, o Google Chat, servidor SMTP, um endpoint HTTP ou uma instância do BigQuery usando notificadores do Cloud Build. Nesta página, explicamos como automatizar o processo de configuração do notificador desejado.

Como automatizar a configuração de notificações

O Cloud Build oferece um script de configuração que pode ser usado para automatizar a configuração de notificação. Para configurar notificações usando o script de configuração:

Slack

Configuração

Nas seções a seguir, descrevemos as etapas que você precisa concluir antes de automatizar a configuração da notificação para o notificador.

Ativando APIs

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Como receber e armazenar credenciais

  1. Crie um aplicativo Slack para o espaço de trabalho do Slack ao qual você quer enviar notificações.

  2. Ative webhooks de entrada para postar mensagens no Slack pelo Cloud Build.

  3. Navegue até seu aplicativo do Slack para localizar o URL do webhook de entrada. O URL será semelhante ao seguinte:

    http://hooks.slack.com/services/...
    
  4. Armazene o URL do webhook de entrada no Gerenciador de secrets:

    1. Abra a página do Secret Manager no console do Google Cloud:

      Abrir a página "Gerenciador de secrets"

    2. Clique em Criar secret.

    3. Insira um nome para o secret.

    4. Em Valor do secret, adicione o URL de webhook de entrada do aplicativo Slack.

    5. Para salvar o secret, clique em Criar secret.

Como gravar um arquivo de configuração de notificação

Grave um arquivo de configuração do notificador para configurar seu notificador do Slack e filtrar eventos de build:

No exemplo de arquivo de configuração do notificador de exemplo, o campo filter usa Common Expression Language com a variável disponível, build, para filtrar os eventos de build com um status SUCCESS:

  apiVersion: cloud-build-notifiers/v1
  kind: SlackNotifier
  metadata:
    name: example-slack-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
      template:
        type: golang
        uri: gs://example-gcs-bucket/slack.json
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

Onde:

  • webhook-url é a variável de configuração usada neste exemplo para fazer referência ao caminho do URL do webhook do Slack armazenado no gerenciador de secrets. O nome da variável especificada aqui precisa corresponder ao campo name em secrets.
  • project-id é o ID do seu projeto do Google Cloud.
  • secret-name é o nome do secret que contém o URL do webhook do Slack.
  • O campo uri faz referência ao arquivo slack.json. Esse arquivo contém um modelo JSON hospedado no Cloud Storage e representa sua mensagem de notificação para o espaço do Slack.

Para ver o exemplo, consulte o arquivo de configuração do notificador para o notificador do Slack.

Como executar o script de automação

Para automatizar a configuração de notificações para o notificador:

  1. Clone o repositório do cloud-build-notifiers.

  2. Configure a Google Cloud CLI com o ID do projeto e a região:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Em que:

    • project-id é o ID do projeto no Google Cloud.
    • region é a região para implantar o notificador.
  3. Execute o seguinte comando na raiz do repositório:

    ./setup.sh slack config-path -t template-path -s secret-name

Onde:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • template-path é o caminho para o arquivo de modelo dos notificadores. O arquivo de modelo de notificador contém o modelo JSON armazenado no Cloud Storage e representa sua mensagem de notificação. É possível incluir o arquivo de modelo do notificador como um caminho usando essa variável ou no campo uri do arquivo de configuração do notificador.
  • secret-name é o nome do secret armazenado no Gerenciador de secrets.

Depois de executar o script, você verá a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

O notificador já está configurado. Veja o script completo no repositório cloud-build-notifiers ou execute ./setup.sh --help para ver instruções de uso associadas ao script.

SMTP

Configuração

Nas seções a seguir, descrevemos as etapas que você precisa concluir antes de automatizar a configuração da notificação para o notificador.

Ativando APIs

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Armazene as credenciais

  1. Armazene a senha da conta de e-mail do remetente no Gerenciador de secrets:

  2. Abra a página do Secret Manager no console do Google Cloud:

    Abrir a página "Gerenciador de secrets"

  3. Clique em Criar secret.

  4. Insira um nome para o secret.

  5. Em Valor do secret, adicione a senha da conta de e-mail do remetente.

  6. Para salvar o secret, clique em Criar secret.

Como gravar um arquivo de configuração de notificação

Grave um arquivo de configuração do notificador para configurar o notificador SMTP e filtrar os eventos de build:

No exemplo de arquivo de configuração do notificador de exemplo, o campo filter usa Common Expression Language com a variável disponível, build, para filtrar os eventos de build com um status SUCCESS:

 apiVersion: cloud-build-notifiers/v1
 kind: SMTPNotifier
 metadata:
   name: example-smtp-notifier
 spec:
   notification:
     filter: build.status == Build.Status.SUCCESS
     delivery:
       server: server-host-name
       port: "port"
       sender: sender-email
       from: from-email
       recipients:
         - recipient-email
         # optional: more emails here
       password:
         secretRef: smtp-password
      template:
        type: golang
        uri: gs:example-gcs-bucket/smtp.html
   secrets:
   - name: smtp-password
     value: projects/project-id/secrets/secret-name/versions/latest

Onde:

  • server-host-name é o endereço do seu servidor SMTP.
  • port é a porta que processará as solicitações de SMTP. Esse valor precisa ser especificado como uma string.
  • sender-email é o endereço de e-mail da conta do remetente que é vista pelo server-host-name especificado.
  • from-email é o endereço de e-mail visto pelos destinatários.
  • recipient-email é uma lista de um ou mais endereços de e-mail para receber mensagens do remetente.
  • smtp-password é a variável de configuração usada neste exemplo para fazer referência à senha da conta de e-mail do remetente armazenada no Gerenciador de secrets. O nome da variável especificado aqui precisa corresponder ao campo name em secrets.
  • project-id é o ID do seu projeto do Google Cloud.
  • secret-name é o nome do secret que contém a senha da conta de e-mail do remetente.
  • O campo uri faz referência ao arquivo smtp.html. Esse arquivo se refere a um modelo HTML hospedado no Cloud Storage e representa seu e-mail de notificação.

Para ver o exemplo, consulte o arquivo de configuração do notificador para o notificador SMTP.

Como executar o script de automação

Para automatizar a configuração de notificação do notificador:

  1. Clone o repositório do cloud-build-notifiers.

  2. Configure a Google Cloud CLI com o ID do projeto e a região:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Em que:

    • project-id é o ID do projeto no Google Cloud.
    • region é a região para implantar o notificador.
  3. Execute o seguinte comando na raiz do repositório:

    ./setup.sh smtp config-path -t template-path -s secret-name

Onde:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • template-path é o caminho para o arquivo de modelo dos notificadores. O arquivo de modelo de notificador contém o modelo JSON armazenado no Cloud Storage e representa sua mensagem de notificação. É possível incluir o arquivo de modelo do notificador como um caminho usando essa variável ou no campo uri do arquivo de configuração do notificador.
  • secret-name é o nome do secret armazenado no Gerenciador de secrets.

Depois de executar o script, você verá a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

O notificador já está configurado. Veja o script completo no repositório cloud-build-notifiers ou execute ./setup.sh --help para ver instruções de uso associadas ao script.

BigQuery

Configuração

Nas seções a seguir, descrevemos as etapas que você precisa concluir antes de automatizar a configuração da notificação para o notificador.

Ativando APIs

Enable the Cloud Build, Cloud Run, Pub/Sub, and BigQuery APIs.

Enable the APIs

Como conceder permissões

Conceda permissão à conta de serviço do Cloud Run para criar e gravar tabelas do BigQuery e receber dados do Artifact Registry relacionados à versão:

  1. Acesse a página "IAM" no Console do Google Cloud.

    Abrir a página do IAM

  2. Localize a conta de serviço padrão do Compute Engine associada ao seu projeto:

    Sua conta de serviço padrão do Compute Engine será semelhante à seguinte, em que project-number é o número do projeto:

        project-number-compute@developer.gserviceaccount.com
    
  3. Clique no ícone de lápis na linha que contém sua conta de serviço padrão do Compute Engine.

    A guia Editar acesso vai aparecer.

    1. Clique em Adicionar outro papel.

    2. Adicione os seguintes papéis:

      • Leitor do Artifact Registry
      • Editor de dados do BigQuery

        O papel Leitor do Artifact Registry permite buscar dados para as imagens. O Editor de dados do BigQuery dá acesso de leitura e gravação aos seus dados.

    3. Clique em Save.

Como gravar um arquivo de configuração de notificação

Grave um arquivo de configuração do notificador para configurar seu notificador do BigQuery e filtrar eventos de build:

No exemplo de arquivo de configuração de notificador a seguir, o campo filter usa Common Expression Language com a variável build para filtrar eventos de build com um ID de gatilho especificado:

 apiVersion: cloud-build-notifiers/v1
 kind: BigQueryNotifier
 metadata:
   name: example-bigquery-notifier
 spec:
   notification:
     filter: build.build_trigger_id == "123e4567-e89b-12d3-a456-426614174000"
     delivery:
       table: projects/project-id/datasets/dataset-name/tables/table-name
     template:
       type: golang
       uri: gs://example-gcs-bucket/bq.json

Em que:

  • project-id é o ID do seu projeto do Google Cloud.
  • dataset-name é o nome que você quer dar ao conjunto de dados.
  • table-name é o nome que você quer dar à tabela.

O table-name no arquivo de configuração do notificador pode se referir a:

  • uma tabela inexistente
  • uma tabela vazia sem um esquema
  • uma tabela atual com um esquema que corresponde às especificações de esquema no notificador do BigQuery;

  • O campo uri faz referência ao arquivo bq.json. Esse arquivo se refere a um modelo JSON hospedado no Cloud Storage e representa as informações a serem inseridas na tabela do BigQuery.

Para ver o exemplo, consulte o arquivo de configuração do notificador do notificador do BigQuery.

Como executar o script de automação

Para automatizar a configuração de notificações para o notificador:

  1. Clone o repositório do cloud-build-notifiers.

  2. Configure a Google Cloud CLI com o ID do projeto e a região:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Em que:

    • project-id é o ID do projeto no Google Cloud.
    • region é a região para implantar o notificador.
  3. Execute o seguinte comando na raiz do repositório:

     ./setup.sh bigquery -t config-path -t template-path
    

    Onde:

    • config-path é o caminho para o arquivo de configuração dos notificadores.
    • template-path é o caminho para o arquivo de modelo dos notificadores. O arquivo de modelo de notificador contém o modelo JSON armazenado no Cloud Storage e representa sua mensagem de notificação. Você pode incluir seu arquivo de modelo dos notificadores como um caminho usando essa variável ou no campo uri do arquivo de configuração dos notificadores.

    Depois de executar o script, você verá a seguinte mensagem:

    ** NOTIFIER SETUP COMPLETE **
    

    O notificador já está configurado. Veja o script completo no repositório do cloud-build-notifier ou execute ./setup.sh --help para ver instruções de uso associadas ao script.

HTTP

Configuração

Nas seções a seguir, descrevemos as etapas que você precisa concluir antes de automatizar a configuração da notificação para o notificador.

Ativando APIs

Enable the Cloud Build, Cloud Run, and Pub/Sub APIs.

Enable the APIs

Como gravar um arquivo de configuração de notificação

Grave um arquivo de configuração para configurar seu notificador do HTTP e filtrar eventos de build:

No exemplo de arquivo de configuração do notificador de exemplo, o campo filter usa Common Expression Language com a variável disponível, build, para filtrar os eventos de build com um status SUCCESS:

    apiVersion: cloud-build-notifiers/v1
    kind: HTTPNotifier
    metadata:
      name: example-http-notifier
    spec:
      notification:
        filter: build.status == Build.Status.SUCCESS
        delivery:
          # The `http(s)://` protocol prefix is required.
          url: url
        template:
          type: golang
          uri: gs://example-gcs-bucket/http.json

Onde:

  • url é a variável de configuração usada neste exemplo para especificar o URL da solicitação.
  • url é o URL que você quer especificar como seu servidor destinatário.
  • O campo uri faz referência ao arquivo http.json. Esse arquivo se refere a um modelo JSON hospedado no Cloud Storage e representa o payload do JSON para o endpoint do webhook.

Para ver o exemplo, consulte o arquivo de configuração do notificador para o notificador do HTTP.

Como executar o script de automação

Para automatizar a configuração de notificação do notificador:

  1. Clone o repositório do cloud-build-notifiers.

  2. Configure a Google Cloud CLI com o ID do projeto e a região:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Em que:

    • project-id é o ID do projeto no Google Cloud.
    • region é a região para implantar o notificador.
  3. Execute o seguinte comando na raiz do repositório:

     ./setup.sh http -t config-path
    

    Onde:

    • config-path é o caminho para o arquivo de configuração dos notificadores.

Depois de executar o script, você verá a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

O notificador já está configurado. Veja o script completo no repositório do cloud-build-notifier ou execute ./setup.sh --help para ver instruções de uso associadas ao script.

Google Chat

Como configurar

Nas seções a seguir, descrevemos as etapas que você precisa concluir antes de automatizar a configuração da notificação para o notificador.

Ativando APIs

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Como receber e armazenar credenciais

  1. Criar um espaço no Google Chat.

  2. No espaço criado, crie um webhook de entrada. para postar mensagens do Cloud Build no Google Chat. Seu URL será semelhante a este:

    https://chat.googleapis.com/v1/spaces/...

  3. Armazene o URL do webhook de entrada no Gerenciador de secrets:

    1. Abra a página do Secret Manager no console do Google Cloud:

      Abrir a página "Gerenciador de secrets"

    2. Clique em Criar secret.

    3. Insira um nome para o secret.

    4. Em Valor do secret, adicione o URL do webhook de entrada do seu espaço do Google Chat.

    5. Para salvar o secret, clique em Criar secret.

Como gravar um arquivo de configuração de notificação

Grave um arquivo de configuração do notificador para configurar seu notificador do Google Chat e filtrar eventos de build:

No exemplo de arquivo de configuração do notificador de exemplo, o campo filter usa Common Expression Language com a variável disponível, build, para filtrar os eventos de build com um status SUCCESS:

  apiVersion: cloud-build-notifiers/v1
  kind: GoogleChatNotifier
  metadata:
    name: example-googlechat-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

Em que:

  • webhook-url é a variável de configuração usada neste exemplo para fazer referência ao caminho do URL do webhook do Google Chat armazenado no Gerenciador de secrets. O nome da variável especificada aqui precisa corresponder ao campo name em secrets.
  • project-id é o ID do seu projeto do Google Cloud.
  • secret-name é o nome do secret que contém o webhook do Google Chat. URL.

Para conferir o exemplo, consulte o arquivo de configuração do notificador para o notificador do Google Chat.

Como executar o script de automação

Para automatizar a configuração de notificações para o notificador:

  1. Clone o repositório do cloud-build-notifiers.

  2. Configure a Google Cloud CLI com o ID do projeto e a região:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Em que:

    • project-id é o ID do projeto no Google Cloud.
    • region é a região em que o notificador será implantado.
  3. Execute o seguinte comando na raiz do repositório:

./setup.sh googlechat config-path -s secret-name

Onde:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • secret-name é o nome do secret armazenado no Gerenciador de secrets.

Depois de executar o script, você verá a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

O notificador já está configurado. Veja o script completo no repositório cloud-build-notifiers ou execute ./setup.sh --help para ver instruções de uso associadas ao script.

Problemas do GitHub

Como configurar

Nas seções a seguir, descrevemos as etapas que você precisa concluir antes de automatizar a configuração da notificação para o notificador.

Ativando APIs

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Como receber e armazenar credenciais

  1. Crie um token de acesso pessoal do GitHub:

    1. Acesse as configurações do GitHub para criar um novo token.
    2. Selecione o escopo repo.

    3. Clique em Gerar token.

  2. Armazene seu token no Secret Manager:

    1. Abra a página do Secret Manager no console do Google Cloud:

      Abrir a página "Gerenciador de secrets"

    2. Clique em Criar secret.

    3. Insira um nome para o secret.

    4. Em Valor do secret, adicione seu token do GitHub.

    5. Para salvar o secret, clique em Criar secret.

Como gravar um arquivo de configuração de modelo

Escreva um arquivo de configuração de modelo para descrever o formato que os problemas do GitHub criados devem assumir:

No arquivo de configuração de modelo de exemplo a seguir, os campos title e body usam variáveis de substituição do build:

{
    "title": "Build {{.Build.BuildTriggerId}}: {{.Build.Status}}",
    "body": "[{{.Build.ProjectId}}] {{.Build.BuildTriggerId}} status: **{{.Build.Status}}**\n\n[View Logs]({{.Build.LogUrl}})"
}

Para ver o exemplo, consulte o arquivo de configuração de modelo para o notificador de problemas do GitHub.

É possível definir outros campos com base nos parâmetros de corpo disponíveis no endpoint da API do GitHub para criar um problema.

Como gravar um arquivo de configuração de notificação

Grave um arquivo de configuração do notificador para configurar seu notificador do Google Chat e filtrar eventos de build:

No exemplo de arquivo de configuração do notificador de exemplo, o campo filter usa Common Expression Language com a variável disponível, build, para filtrar os eventos de build com um status SUCCESS:

apiVersion: cloud-build-notifiers/v1
kind: GitHubIssuesNotifier
metadata:
  name: example-githubissues-notifier
spec:
  notification:
    filter: build.status == Build.Status.FAILURE
    template: 
      type: golang
      uri: gs://project-id-notifiers-config/template-file-name
    delivery:
      githubToken:
        secretRef: github-token
      githubRepo: myuser/myrepo
  secrets:
  - name: github-token
    value: projects/project-id/secrets/secret-name/versions/latest

Em que:

  • githubToken é a variável de configuração usada neste exemplo para fazer referência ao token do GitHub armazenado no Secret Manager. O nome da variável especificada aqui precisa corresponder ao campo name em secrets.
  • project-id-notifiers-config é o local para fazer upload do modelo, e o bucket será criado se ainda não existir.
  • template-file-name é o nome do arquivo de modelo.
  • myuser/myrepo é o nome do repositório em que os problemas serão criados.
  • project-id é o ID do seu projeto do Google Cloud.
  • secret-name é o nome do secret que contém o token do GitHub.

Para ver o exemplo, consulte o arquivo de configuração do notificador do notificador do Google Chat.

Para ver outros campos que podem ser filtrados, consulte o recurso Build. Para ver mais exemplos de filtragem, consulte Como usar a CEL para filtrar eventos do build.

Como executar o script de automação

Para automatizar a configuração de notificação do notificador:

  1. Clone o repositório do cloud-build-notifiers.

  2. Configure a CLI do Google Cloud com o ID e a região do projeto:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Em que:

    • project-id é o ID do projeto no Google Cloud.
    • region é a região em que o notificador será implantado.
  3. Execute o seguinte comando na raiz do repositório:

    ./setup.sh githubissues config-path -t template-path -s secret-name

Onde:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • template-path é o caminho para o arquivo de modelo dos notificadores. O arquivo de modelo de notificador contém o modelo JSON armazenado no Cloud Storage e representa sua mensagem de notificação. É possível incluir o arquivo de modelo do notificador como um caminho usando essa variável ou no campo uri do arquivo de configuração do notificador.
  • secret-name é o nome do secret armazenado no Gerenciador de secrets.

Depois de executar o script, você verá a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

O notificador já está configurado. Veja o script completo no repositório cloud-build-notifiers ou execute ./setup.sh --help para ver instruções de uso associadas ao script.

A seguir