Automatizar a configuração das notificações

Pode configurar o Cloud Build para lhe enviar notificações de compilação para o Slack, o Google Chat, um servidor SMTP, um ponto final HTTP ou uma instância do BigQuery através dos notificadores do Cloud Build. Esta página explica como pode automatizar o processo de configuração do notificador pretendido.

Automatizar a configuração de notificações

O Cloud Build fornece um script de configuração que pode usar para automatizar a configuração de notificações. Para configurar as notificações através do script de configuração:

Slack

A configurar o

As secções seguintes descrevem os passos que tem de concluir antes de automatizar a configuração de notificações para o seu notificador.

Ativar APIs

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

Enable the APIs

Obter e armazenar credenciais

  1. Crie uma app Slack para o espaço de trabalho do Slack para o qual quer enviar notificações.

  2. Ative os webhooks recebidos para publicar mensagens do Cloud Build no Slack.

  3. Navegue para a sua app Slack para localizar o URL do webhook de entrada. O URL tem um aspeto semelhante ao seguinte:

    http://hooks.slack.com/services/...
    
  4. Armazene o URL do webhook recebido no Secret Manager:

    1. Abra a página Secret Manager na Google Cloud consola:

      Abra a página Secret Manager

    2. Clique em Criar segredo.

    3. Introduza um nome para o segredo.

    4. Em Valor secreto, adicione o URL do webhook recebido para a sua app Slack.

    5. Para guardar o segredo, clique em Criar segredo.

Escrever um ficheiro de configuração do notificador

Escreva um ficheiro de configuração do notificador para configurar o notificador do Slack e filtre os eventos de compilação:

No ficheiro de configuração do notificador do exemplo seguinte, o campo filter usa a linguagem de expressão comum com a variável disponível, build, para filtrar eventos de compilação com um estado 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 Secret Manager. O nome da variável que especificar aqui deve corresponder ao campo name em secrets.
  • project-id é o ID do seu Google Cloud projeto.
  • secret-name é o nome do seu segredo que contém o URL do webhook do Slack.
  • O campo uri faz referência ao ficheiro slack.json. Este ficheiro contém um modelo JSON alojado no armazenamento na nuvem e representa a sua mensagem de notificação para o seu espaço do Slack.

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

Executar o script de automatização

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

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

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

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

    Onde:

    • project-id é o ID do seu Google Cloud projeto.
    • region é a região para implementar 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 ficheiro de configuração dos notificadores.
  • template-path é o caminho para o ficheiro de modelo dos seus notificadores. O ficheiro de modelo de notificadores contém o modelo JSON alojado no armazenamento na nuvem e representa a sua mensagem de notificação. Pode incluir o ficheiro de modelo dos notificadores como um caminho através desta variável ou no campo uri do ficheiro de configuração dos notificadores.
  • secret-name é o nome do seu segredo armazenado no Secret Manager.

Depois de executar o script, é apresentada a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

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

SMTP

A configurar o

As secções seguintes descrevem os passos que tem de concluir antes de automatizar a configuração de notificações para o seu notificador.

Ativar APIs

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

Enable the APIs

Armazenamento de credenciais

  1. Armazene a palavra-passe da conta de email do remetente no Secret Manager:

  2. Abra a página Secret Manager na Google Cloud consola:

    Abra a página Secret Manager

  3. Clique em Criar segredo.

  4. Introduza um nome para o segredo.

  5. Em Valor secreto, adicione a palavra-passe da conta de email do remetente.

  6. Para guardar o segredo, clique em Criar segredo.

Escrever um ficheiro de configuração do notificador

Escreva um ficheiro de configuração do notificador para configurar o notificador SMTP e filtre os eventos de compilação:

No ficheiro de configuração do notificador do exemplo seguinte, o campo filter usa a linguagem de expressão comum com a variável disponível, build, para filtrar eventos de compilação com um estado 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 processa os pedidos SMTP. Este valor deve ser especificado como uma string.
  • sender-email é o endereço de email da conta do remetente que é visto pelo server-host-name especificado.
  • from-email é o endereço de email que os destinatários veem.
  • recipient-email é uma lista de um ou mais endereços de email para receber mensagens do remetente.
  • smtp-password é a variável de configuração usada neste exemplo para fazer referência à palavra-passe da conta de email do remetente armazenada no Secret Manager. O nome da variável que especificar aqui deve corresponder ao campo name em secrets.
  • project-id é o ID do seu Google Cloud projeto.
  • secret-name é o nome do seu segredo que contém a palavra-passe da conta de email do remetente.
  • O campo uri faz referência ao ficheiro smtp.html. Este ficheiro refere-se a um modelo HTML alojado no Cloud Storage e representa o seu email de notificação.

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

Executar o script de automatização

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

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

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

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

    Onde:

    • project-id é o ID do seu Google Cloud projeto.
    • region é a região para implementar 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 ficheiro de configuração dos notificadores.
  • template-path é o caminho para o ficheiro de modelo dos seus notificadores. O ficheiro de modelo de notificadores contém o modelo JSON alojado no armazenamento na nuvem e representa a sua mensagem de notificação. Pode incluir o ficheiro de modelo dos notificadores como um caminho através desta variável ou no campo uri do ficheiro de configuração dos notificadores.
  • secret-name é o nome do seu segredo armazenado no Secret Manager.

Depois de executar o script, é apresentada a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

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

BigQuery

A configurar o

As secções seguintes descrevem os passos que tem de concluir antes de automatizar a configuração de notificações para o seu notificador.

Ativar APIs

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

Enable the APIs

Conceder autorizações

Conceda à conta de serviço do Cloud Run autorização para criar e escrever tabelas do BigQuery, bem como autorização para obter dados do Artifact Registry relacionados com a sua compilação:

  1. Aceda à página IAM na Google Cloud consola:

    Abra a página IAM

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

    A sua conta de serviço predefinida do Compute Engine tem um aspeto semelhante ao seguinte, em que project-number é o número do seu projeto:

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

    É apresentado o separador Acesso de edição.

    1. Clique em Adicionar outra função.

    2. Adicione as seguintes funções:

      • Leitor do Artifact Registry
      • Editor de dados do BigQuery

        A função Leitor do Artifact Registry permite-lhe obter dados para as suas imagens. A função de editor de dados do BigQuery dá-lhe acesso de leitura e escrita aos seus dados.

    3. Clique em Guardar.

Escrever um ficheiro de configuração do notificador

Escreva um ficheiro de configuração do notificador para configurar o notificador do BigQuery e filtre os eventos de compilação:

No ficheiro de configuração do notificador de exemplo seguinte, o campo filter usa a linguagem de expressão comum com a variável build para filtrar eventos de compilação com um ID de acionador 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

Onde:

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

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

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

  • O campo uri faz referência ao ficheiro bq.json. Este ficheiro refere-se a um modelo JSON alojado no Cloud Storage e representa as informações a inserir na sua tabela do BigQuery.

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

Executar o script de automatização

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

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

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

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

    Onde:

    • project-id é o ID do seu Google Cloud projeto.
    • region é a região para implementar 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 ficheiro de configuração dos notificadores.
    • template-path é o caminho para o ficheiro de modelo dos seus notificadores. O ficheiro de modelo de notificadores contém o modelo JSON alojado no armazenamento na nuvem e representa a sua mensagem de notificação. Pode incluir o ficheiro de modelo dos notificadores como um caminho através desta variável ou no campo uri do ficheiro de configuração dos notificadores.

    Depois de executar o script, é apresentada a seguinte mensagem:

    ** NOTIFIER SETUP COMPLETE **
    

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

HTTP

A configurar o

As secções seguintes descrevem os passos que tem de concluir antes de automatizar a configuração de notificações para o seu notificador.

Ativar APIs

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

Enable the APIs

Escrever um ficheiro de configuração do notificador

Escreva um ficheiro de configuração do notificador para configurar o notificador HTTP e filtrar eventos de compilação:

No ficheiro de configuração do notificador do exemplo seguinte, o campo filter usa a linguagem de expressão comum com a variável disponível, build, para filtrar eventos de compilação com um estado 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 do seu pedido.
  • url é o URL que quer especificar como o seu servidor destinatário.
  • O campo uri faz referência ao ficheiro http.json. Este ficheiro refere-se a um modelo JSON alojado no Cloud Storage e representa a carga útil JSON para o ponto final do webhook.

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

Executar o script de automatização

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

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

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

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

    Onde:

    • project-id é o ID do seu Google Cloud projeto.
    • region é a região para implementar 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 ficheiro de configuração dos notificadores.

Depois de executar o script, é apresentada a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

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

Google Chat

A configurar o

As secções seguintes descrevem os passos que tem de concluir antes de automatizar a configuração de notificações para o seu notificador.

Ativar APIs

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

Enable the APIs

Obter e armazenar credenciais

  1. Crie um espaço no Google Chat.

  2. No espaço criado, crie um webhook recebido para publicar mensagens do Cloud Build no Google Chat. O URL tem um aspeto semelhante ao seguinte:

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

  3. Armazene o URL do webhook recebido no Secret Manager:

    1. Abra a página Secret Manager na Google Cloud consola:

      Abra a página Secret Manager

    2. Clique em Criar segredo.

    3. Introduza um nome para o segredo.

    4. Em Valor secreto, adicione o URL do webhook recebido para o seu espaço do Google Chat.

    5. Para guardar o segredo, clique em Criar segredo.

Escrever um ficheiro de configuração do notificador

Escreva um ficheiro de configuração do notificador para configurar o seu notificador do Google Chat e filtre por eventos de compilação:

No ficheiro de configuração do notificador do exemplo seguinte, o campo filter usa a linguagem de expressão comum com a variável disponível, build, para filtrar eventos de compilação com um estado 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

Onde:

  • 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 que especificar aqui deve corresponder ao campo name em secrets.
  • project-id é o ID do seu Google Cloud projeto.
  • secret-name é o nome do seu segredo que contém o URL do webhook do Google Chat.

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

Executar o script de automatização

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

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

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

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

    Onde:

    • project-id é o ID do seu Google Cloud projeto.
    • region é a região para implementar o notificador.
  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 ficheiro de configuração dos notificadores.
  • secret-name é o nome do seu segredo armazenado no Secret Manager.

Depois de executar o script, é apresentada a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

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

GitHub Issues

A configurar o

As secções seguintes descrevem os passos que tem de concluir antes de automatizar a configuração de notificações para o seu notificador.

Ativar APIs

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

Enable the APIs

Obter e armazenar credenciais

  1. Crie um token de acesso pessoal do GitHub:

    1. Aceda às definições do GitHub para criar um novo token.
    2. Selecione o âmbito repo.

    3. Clique em Gerar token

  2. Armazene o seu token no Secret Manager:

    1. Abra a página Secret Manager na Google Cloud consola:

      Abra a página Secret Manager

    2. Clique em Criar segredo.

    3. Introduza um nome para o segredo.

    4. Em Valor secreto, adicione o seu token do GitHub.

    5. Para guardar o segredo, clique em Criar segredo.

Escrever um ficheiro de configuração de modelo

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

No ficheiro de configuração do modelo de exemplo seguinte, os campos title e body usam variáveis de substituição da compilação:

{
    "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 ficheiro de configuração do modelo para o notificador de problemas do GitHub.

É possível definir campos adicionais a partir dos parâmetros do corpo disponíveis no ponto final da API GitHub para criar um problema.

Escrever um ficheiro de configuração do notificador

Escreva um ficheiro de configuração do notificador para configurar o seu notificador do Google Chat e filtre por eventos de compilação:

No ficheiro de configuração do notificador do exemplo seguinte, o campo filter usa a linguagem de expressão comum com a variável disponível, build, para filtrar eventos de compilação com um estado 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

Onde:

  • 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 que especificar aqui deve corresponder ao campo name em secrets.
  • project-id-notifiers-config é a localização onde o modelo vai ser carregado e o contentor vai ser criado se ainda não existir.
  • template-file-name é o nome do ficheiro de modelo.
  • myuser/myrepo é o nome do repositório no qual os problemas vão ser criados.
  • project-id é o ID do seu Google Cloud projeto.
  • secret-name é o nome do seu segredo que contém o seu token do GitHub.

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

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.

Executar o script de automatização

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

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

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

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

    Onde:

    • project-id é o ID do seu Google Cloud projeto.
    • region é a região para implementar o notificador.
  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 ficheiro de configuração dos notificadores.
  • template-path é o caminho para o ficheiro de modelo dos seus notificadores. O ficheiro de modelo de notificadores contém o modelo JSON alojado no armazenamento na nuvem e representa a sua mensagem de notificação. Pode incluir o ficheiro de modelo dos notificadores como um caminho através desta variável ou no campo uri do ficheiro de configuração dos notificadores.
  • secret-name é o nome do seu segredo armazenado no Secret Manager.

Depois de executar o script, é apresentada a seguinte mensagem:

** NOTIFIER SETUP COMPLETE **

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

O que se segue?