Automatiza la configuración de las notificaciones

Puedes configurar Cloud Build para que te envíe notificaciones de compilación a Slack, Google Chat, Un servidor SMTP, un extremo HTTP o una instancia de BigQuery mediante notificadores de Cloud Build En esta página, se explica cómo puedes automatizar el proceso de configuración para el notificador deseado.

Automatiza la configuración de notificaciones

Cloud Build proporciona una secuencia de comandos de configuración que puedes usar para automatizar la configuración de notificaciones. Para configurar las notificaciones con la secuencia de comandos de configuración, sigue estos pasos:

Slack

Configuración

En las siguientes secciones, se describen los pasos que debes seguir antes de automatizar la configuración de notificaciones para tu notificador.

Habilitando API

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

Enable the APIs

Obtén y almacena credenciales

  1. Crea una app de Slack para el espacio de trabajo de Slack al que deseas enviar notificaciones.

  2. Activa webhooks entrantes para publicar mensajes de Cloud Build en Slack.

  3. Navega a tu app de Slack para localizar la URL del webhook entrante. La URL tendrá un aspecto similar al siguiente:

    http://hooks.slack.com/services/...
    
  4. Almacena la URL del webhook entrante en el administrador de secretos:

    1. Abre la página Secret Manager en la consola de Google Cloud:

      Abrir la página Administrador de secretos

    2. Haz clic en Crear secreto.

    3. Ingresa un nombre para tu secreto.

    4. En Valor del secreto, agrega la URL del webhook entrante para tu app de Slack.

    5. Para guardar el secreto, haz clic en Crear secreto.

Escribe un archivo de configuración del notificador

Escribe un archivo de configuración de notificador para configurar el notificador de Slack y filtrar los eventos de compilación:

En el siguiente ejemplo de archivo de configuración del notificador, el campo filter usa Common Expression Language con la variable disponible, build, para filtrar los eventos de compilación con un 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

Aquí:

  • webhook-url es la variable de configuración que se usa en este ejemplo para hacer referencia a la ruta de URL de webhook de Slack almacenada en Secret Manager. El nombre de la variable que especifiques aquí debe coincidir con el campo name debajo de secrets.
  • project-id es el ID de tu proyecto de Google Cloud.
  • secret-name es el nombre del secreto que contiene la URL de webhook de Slack.
  • El campo uri hace referencia al archivo slack.json. Este archivo contiene una plantilla JSON. se aloja en Cloud Storage y representa tu mensaje de notificación para tu espacio de Slack.

Si quieres ver el ejemplo, consulta el archivo de configuración del notificador del notificador de Slack.

Ejecuta la secuencia de comandos de automatización

Para automatizar la configuración de notificaciones del notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

  2. Configura Google Cloud CLI con el ID y la región de tu proyecto:

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

    Aquí:

    • project-id es tu ID del proyecto de Cloud.
    • region es la región en la que se implementará el notificador.
  3. Ejecuta el siguiente comando en la raíz del repositorio:

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

Aquí:

  • config-path es la ruta de acceso al archivo de configuración de los notificadores.
  • template-path es la ruta de acceso al archivo de plantilla de los notificadores. Tu el archivo de plantilla de los notificadores contiene la plantilla JSON caliente en Cloud Storage y representa tu mensaje de notificación. Puedes incluir el archivo de plantilla de los notificadores como una ruta de acceso con esta variable o dentro del campo uri del archivo de configuración de los notificadores.
  • secret-name es el nombre de tu secreto almacenado en el administrador de secretos.

Después de ejecutar la secuencia de comandos, verás el siguiente mensaje:

** NOTIFIER SETUP COMPLETE **

Se configuró el notificador. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para obtener instrucciones de uso asociadas a la secuencia de comandos.

SMTP

Configuración

En las siguientes secciones, se describen los pasos que debes seguir antes de automatizar la configuración de notificaciones para tu notificador.

Habilitando API

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

Enable the APIs

Cómo almacenar las credenciales

  1. Guarda la contraseña de la cuenta de correo electrónico del remitente en el administrador de secretos:

  2. Abre la página Secret Manager en la consola de Google Cloud:

    Abrir la página Administrador de secretos

  3. Haz clic en Crear secreto.

  4. Ingresa un nombre para tu secreto.

  5. En Valor del secreto, agrega la contraseña de la cuenta de correo electrónico del remitente.

  6. Para guardar el secreto, haz clic en Crear secreto.

Escribe un archivo de configuración del notificador

Escribe un archivo de configuración de notificador para configurar tu notificador SMTP y filtrar los eventos de compilación:

En el siguiente ejemplo de archivo de configuración del notificador, el campo filter usa Common Expression Language con la variable disponible, build, para filtrar los eventos de compilación con un 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

Aquí:

  • server-host-name es la dirección de tu servidor SMTP.
  • port es el puerto que manejará las solicitudes SMTP. Este valor se debe especificar como una string.
  • sender-email es la dirección de correo electrónico de la cuenta del remitente que ve el server-host-name especificado.
  • from-email es la dirección de correo electrónico que ven los destinatarios.
  • recipient-email es una lista de una o más direcciones de correo electrónico para recibir mensajes del remitente.
  • smtp-password es la variable de configuración que se usa en este ejemplo para hacer referencia a la contraseña de la cuenta de correo electrónico del remitente almacenada en el Administrador de secretos. El nombre de la variable que especifiques aquí debe coincidir con el campo name debajo de secrets.
  • project-id es el ID de tu proyecto de Google Cloud.
  • secret-name es el nombre del secreto que contiene la contraseña de la cuenta de correo electrónico del remitente.
  • El campo uri hace referencia al archivo smtp.html. Este archivo hace referencia a una plantilla HTML alojada en Cloud Storage y representa tu correo electrónico de notificación.

Para ver el ejemplo, consulta el archivo de configuración del notificador para el notificador SMTP.

Ejecuta la secuencia de comandos de automatización

Para automatizar la configuración de notificaciones de tu cuenta, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

  2. Configura Google Cloud CLI con el ID del proyecto y la región:

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

    Aquí:

    • project-id es tu ID del proyecto de Cloud.
    • region es la región en la que se implementará el notificador.
  3. Ejecuta el siguiente comando en la raíz del repositorio:

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

Aquí:

  • config-path es la ruta de acceso al archivo de configuración de los notificadores.
  • template-path es la ruta de acceso al archivo de plantilla de los notificadores. Tu el archivo de plantilla de los notificadores contiene la plantilla JSON caliente en Cloud Storage y representa tu mensaje de notificación. Puedes incluir el archivo de plantilla de los notificadores como una ruta de acceso con esta variable o dentro del campo uri del archivo de configuración de los notificadores.
  • secret-name es el nombre de tu secreto almacenado en el administrador de secretos.

Después de ejecutar la secuencia de comandos, verás el siguiente mensaje:

** NOTIFIER SETUP COMPLETE **

Se configuró el notificador. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para obtener instrucciones de uso asociadas a la secuencia de comandos.

BigQuery

Configuración

En las siguientes secciones, se describen los pasos que debes seguir antes de automatizar la configuración de notificaciones para tu notificador.

Habilitando API

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

Enable the APIs

Otorga permisos

Otorga permiso a tu cuenta de servicio de Cloud Run para crear y escribir tablas de BigQuery y permiso para recuperar datos de Artifact Registry relacionados con tu compilación:

  1. Ve a la página de IAM en la consola de Google Cloud:

    Abrir la página IAM

  2. Busca la cuenta de servicio predeterminada de Compute Engine asociada con tu proyecto:

    La cuenta de servicio predeterminada de Compute Engine será similar a la siguiente, en la que project-number es tu número de proyecto:

        project-number-compute@developer.gserviceaccount.com
    
  3. Haz clic en el ícono de lápiz en la fila que contiene tu cuenta de servicio predeterminada de Compute Engine.

    Verás la pestaña Editar acceso.

    1. Haz clic en Agregar otra función.

    2. Agrega las siguientes funciones:

      • Lector de Artifact Registry
      • Editor de datos de BigQuery

        La función Lector de Artifact Registry te permite recuperar datos para tus imágenes. El editor de datos de BigQuery te brinda acceso de lectura y escritura a los datos.

    3. Haz clic en Guardar.

Escribir un archivo de configuración del notificador

Escribe un archivo de configuración de notificador para configurar tu notificador de BigQuery y filtrar los eventos de compilación:

En el siguiente ejemplo de archivo de configuración de notificación, el campo filter usa Common Expression Language con la variable build para filtrar los eventos de compilación con un ID de activador 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

Aquí:

  • project-id es el ID de tu proyecto de Google Cloud.
  • dataset-name es el nombre que deseas darle a tu conjunto de datos.
  • table-name es el nombre que deseas darle a tu tabla.

El table-name en tu archivo de configuración de notificador puede hacer referencia a lo siguiente:

  • una tabla inexistente
  • una tabla vacía sin un esquema
  • una tabla existente con un esquema que coincida con las especificaciones del esquema en el notificador de BigQuery

  • El campo uri hace referencia al archivo bq.json. Este archivo hace referencia a una plantilla JSON alojada en Cloud Storage y representa la información que se insertará en tu tabla de BigQuery.

Si deseas ver el ejemplo, consulta el archivo de configuración de notificación para el notificador de BigQuery.

Ejecuta la secuencia de comandos de automatización

Para automatizar la configuración de notificaciones de tu cuenta, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

  2. Configura Google Cloud CLI con el ID y la región de tu proyecto:

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

    Aquí:

    • project-id es tu ID del proyecto de Cloud.
    • region es la región en la que se implementará el notificador.
  3. Ejecuta el siguiente comando en la raíz del repositorio:

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

    Aquí:

    • config-path es la ruta de acceso al archivo de configuración de los notificadores.
    • template-path es la ruta de acceso al archivo de plantilla de los notificadores. Tu el archivo de plantilla de los notificadores contiene la plantilla JSON caliente en Cloud Storage y representa tu mensaje de notificación. Puedes incluir el archivo de plantilla de los notificadores como una ruta de acceso con esta variable o dentro del campo uri del archivo de configuración de los notificadores.

    Después de ejecutar la secuencia de comandos, verás el siguiente mensaje:

    ** NOTIFIER SETUP COMPLETE **
    

    Se configuró el notificador. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para obtener instrucciones de uso asociadas a la secuencia de comandos.

HTTP

Configuración

En las siguientes secciones, se describen los pasos que debes seguir antes de automatizar la configuración de notificaciones para tu notificador.

Habilitando API

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

Enable the APIs

Escribe un archivo de configuración del notificador

Escribe un archivo de configuración de notificador para configurar tu notificador HTTP y filtrar los eventos de compilación:

En el siguiente ejemplo de archivo de configuración del notificador, el campo filter usa Common Expression Language con la variable disponible, build, para filtrar los eventos de compilación con un 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

Aquí:

  • url es la variable de configuración que se usa en este ejemplo para especificar la URL de tu solicitud.
  • url es la URL que deseas especificar como tu servidor de destinatario.
  • El campo uri hace referencia al archivo http.json. Este archivo hace referencia a una plantilla JSON alojada en Cloud Storage y representa la carga útil de JSON para el extremo delwebhook.

Para ver el ejemplo, consulta el archivo de configuración del notificador para el notificador HTTP.

Ejecuta la secuencia de comandos de automatización

Para automatizar la configuración de notificaciones de tu cuenta, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

  2. Configura Google Cloud CLI con el ID y la región de tu proyecto:

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

    Aquí:

    • project-id es tu ID del proyecto de Cloud.
    • region es la región en la que se implementará el notificador.
  3. Ejecuta el siguiente comando en la raíz del repositorio:

     ./setup.sh http -t config-path
    

    Aquí:

    • config-path es la ruta de acceso al archivo de configuración de los notificadores.

Después de ejecutar la secuencia de comandos, verás el siguiente mensaje:

** NOTIFIER SETUP COMPLETE **

Se configuró el notificador. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para obtener instrucciones de uso asociadas a la secuencia de comandos.

Google Chat

Configuración

En las siguientes secciones, se describen los pasos que debes seguir antes de automatizar la configuración de notificaciones para tu notificador.

Habilitando API

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

Enable the APIs

Obtén y almacena credenciales

  1. Crea un espacio en Google Chat.

  2. Dentro del espacio creado, crea un webhook entrante publicar mensajes de Cloud Build en Google Chat. La URL será similar a la siguiente:

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

  3. Almacena la URL del webhook entrante en el administrador de secretos:

    1. Abre la página Secret Manager en la consola de Google Cloud:

      Abrir la página Administrador de secretos

    2. Haz clic en Crear secreto.

    3. Ingresa un nombre para tu secreto.

    4. En Valor del secreto, agrega la URL de webhook entrante para tu espacio de Google Chat.

    5. Para guardar el secreto, haz clic en Crear secreto.

Escribir un archivo de configuración del notificador

Escribe un archivo de configuración del notificador para configurar tu notificador de Google Chat y activar el filtro compilar eventos:

En el siguiente ejemplo de archivo de configuración del notificador, el campo filter usa Common Expression Language con la variable disponible, build, para filtrar los eventos de compilación con un 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

Aquí:

  • webhook-url es la variable de configuración que se usa en este ejemplo para hacer referencia a la ruta de URL de webhook de Google Chat almacenada en Secret Manager. El nombre de la variable que especifiques aquí debe coincidir con el campo name debajo de secrets.
  • project-id es el ID de tu proyecto de Google Cloud.
  • secret-name es el nombre del secreto que contiene tu webhook de Google Chat. URL.

Para ver el ejemplo, consulta el archivo de configuración del notificador del notificador de Google Chat.

Ejecuta la secuencia de comandos de automatización

Para automatizar la configuración de notificaciones del notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

  2. Configura Google Cloud CLI con el ID del proyecto y la región:

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

    Aquí:

    • project-id es tu ID del proyecto de Cloud.
    • region es la región en la que se implementará el notificador.
  3. Ejecuta el siguiente comando en la raíz del repositorio:

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

Aquí:

  • config-path es la ruta de acceso al archivo de configuración de los notificadores.
  • secret-name es el nombre de tu secreto almacenado en el administrador de secretos.

Después de ejecutar la secuencia de comandos, verás el siguiente mensaje:

** NOTIFIER SETUP COMPLETE **

Se configuró el notificador. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para obtener instrucciones de uso asociadas a la secuencia de comandos.

Problemas de GitHub

Configuración

En las siguientes secciones, se describen los pasos que debes seguir antes de automatizar la configuración de notificaciones para tu notificador.

Habilitando API

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

Enable the APIs

Obtén y almacena credenciales

  1. Crea un token de acceso personal de GitHub:

    1. Ve a la configuración de GitHub para crear un token nuevo.
    2. Selecciona el permiso repo.

    3. Haz clic en Generate token.

  2. Almacena tu token en Secret Manager:

    1. Abre la página de Secret Manager en la consola de Google Cloud:

      Abrir la página Administrador de secretos

    2. Haz clic en Crear secreto.

    3. Ingresa un nombre para tu secreto.

    4. En Valor secreto, agrega tu token de GitHub.

    5. Para guardar el secreto, haz clic en Crear secreto.

Cómo escribir un archivo de configuración de plantilla

Escribe un archivo de configuración de plantilla para describir el formato que deben tener los problemas de GitHub creados:

En el siguiente archivo de configuración de plantilla de ejemplo, los campos title y body usan variables de sustitución de la compilación:

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

Si quieres ver el ejemplo, consulta el archivo de configuración de plantilla para el notificador de problemas de GitHub.

Los campos adicionales se pueden configurar a partir de los parámetros de cuerpo disponibles del extremo de la API de GitHub para crear un problema.

Escribe un archivo de configuración del notificador

Escribe un archivo de configuración del notificador para configurar tu notificador de Google Chat y activar el filtro compilar eventos:

En el siguiente ejemplo de archivo de configuración del notificador, el campo filter usa Common Expression Language con la variable disponible, build, para filtrar los eventos de compilación con un 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

Aquí:

  • githubToken es la variable de configuración que se usa en este ejemplo para hacer referencia al token de GitHub almacenado en Secret Manager. El nombre de la variable que especifiques aquí debe coincidir con el campo name debajo de secrets.
  • project-id-notifiers-config es la ubicación donde se subirá tu plantilla y se creará el bucket si aún no existe.
  • template-file-name es el nombre de tu archivo de plantilla.
  • myuser/myrepo es el nombre del repositorio en el que se crearán los problemas.
  • project-id es el ID de tu proyecto de Google Cloud.
  • secret-name es el nombre del secreto que contiene el token de GitHub.

Para ver el ejemplo, consulta el archivo de configuración del notificador del notificador de Google Chat.

Para ver campos adicionales por los que puedes filtrar, consulta el recurso Compilar. Si deseas ver ejemplos adicionales de filtros, consulta Usa CEL para filtrar eventos de compilación.

Ejecuta la secuencia de comandos de automatización

Para automatizar la configuración de notificaciones del notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

  2. Configura Google Cloud CLI con el ID y la región de tu proyecto:

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

    Aquí:

    • project-id es tu ID del proyecto de Cloud.
    • region es la región en la que se implementará el notificador.
  3. Ejecuta el siguiente comando en la raíz del repositorio:

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

Aquí:

  • config-path es la ruta de acceso al archivo de configuración de los notificadores.
  • template-path es la ruta de acceso al archivo de plantilla de los notificadores. Tu el archivo de plantilla de los notificadores contiene la plantilla JSON caliente en Cloud Storage y representa tu mensaje de notificación. Puedes incluir el archivo de plantilla de los notificadores como una ruta de acceso con esta variable o dentro del campo uri del archivo de configuración de los notificadores.
  • secret-name es el nombre de tu secreto almacenado en el administrador de secretos.

Después de ejecutar la secuencia de comandos, verás el siguiente mensaje:

** NOTIFIER SETUP COMPLETE **

Se configuró el notificador. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para obtener instrucciones de uso asociadas a la secuencia de comandos.

¿Qué sigue?