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

É possível configurar o Cloud Build para enviar notificações sobre a versão para o Slack, o Google Chat, um servidor SMTP, um endpoint HTTP ou uma instância do BigQuery usando os 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

Ative as APIs Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Ative as 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

Em que:

  • 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 seu 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 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 slack config-path -t template-path -s secret-name

Em que:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • template-path é o caminho para o arquivo de modelo de notificadores. O arquivo do modelo de notificadores contém o modelo JSON do Cloud Storage e representa a mensagem de notificação. É possível incluir o arquivo de modelo de notificadores como um caminho usando essa variável ou no campo uri do arquivo de configuração de 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.

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

Ative as APIs Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Ative as 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

Em que:

  • 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. Esses arquivos se referem a um modelo HTML hospedado no Cloud Storage e representam 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ções 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

Em que:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • template-path é o caminho para o arquivo de modelo de notificadores. O arquivo do modelo de notificadores contém o modelo JSON do Cloud Storage e representa a mensagem de notificação. É possível incluir o arquivo de modelo de notificadores como um caminho usando essa variável ou no campo uri do arquivo de configuração de 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.

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

Ative as APIs Cloud Build, Cloud Run, Pub/Sub, and BigQuery.

Ative as 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 Acesso para editar será exibida.

    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 sua 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 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 bigquery -t config-path -t template-path
    

    Em que:

    • config-path é o caminho para o arquivo de configuração dos notificadores.
    • template-path é o caminho para o arquivo de modelo de notificadores. O arquivo do modelo de notificadores contém o modelo JSON do Cloud Storage e representa a mensagem de notificação. É possível incluir o arquivo de modelo de notificadores como um caminho usando essa variável ou no campo uri do arquivo de configuração de 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

Ative as APIs Cloud Build, Cloud Run, and Pub/Sub.

Ative as 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

Em que:

  • 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 no 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ções 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
    

    Em que:

    • 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

Ative as APIs Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Ative as APIs

Como receber e armazenar credenciais

  1. Crie 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 espaço do Google Chat.

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

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

Escreva um arquivo de configuração do notificador para configurar o notificador do Google Chat 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: 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 Secret Manager. 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 Google Chat.

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

Como executar o script de automação

Para automatizar a configuração de notificações 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 googlechat config-path -s secret-name

Em que:

  • 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 com o 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

Ative as APIs Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Ative as APIs

Como receber e armazenar credenciais

  1. Crie um token de acesso pessoal do GitHub (em inglês):

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

    3. Clique em Gerar token.

  2. Armazene o 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 o token do GitHub.

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

Como gravar um arquivo de configuração de modelo

Escreva um modelo de arquivo de configuração para descrever o formato criado que os problemas do GitHub precisam ter:

No exemplo de arquivo de configuração de modelo 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 do notificador de problemas do GitHub.

Outros campos podem ser definidos usando os parâmetros de corpo disponíveis no endpoint da endpoint de API para criar um problema.

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

Escreva um arquivo de configuração do notificador para configurar o notificador do Google Chat 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: 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 em que o upload do modelo será feito. 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ções 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 githubissues config-path -t template-path -s secret-name

Em que:

  • config-path é o caminho para o arquivo de configuração dos notificadores.
  • template-path é o caminho para o arquivo de modelo de notificadores. O arquivo do modelo de notificadores contém o modelo JSON do Cloud Storage e representa a mensagem de notificação. É possível incluir o arquivo de modelo de notificadores como um caminho usando essa variável ou no campo uri do arquivo de configuração de 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.

A seguir