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 los 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

Habilita las API de Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Habilita las API

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 de 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

Donde:

  • 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 alojada en Cloud Storage y representa el mensaje de notificación en 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 de tu notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es tu ID del proyecto de Google 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

Donde:

  • 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 archivo de plantilla de notificaciones contiene la plantilla JSON que se activa en Cloud Storage y representa tu mensaje de notificación. Puedes incluir tu archivo de plantilla de notificaciones como una ruta de acceso mediante 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

Habilita las API de Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Habilita las API

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 de 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

Donde:

  • 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. Estos archivos hacen referencia a una plantilla HTML alojada en Cloud Storage y representa tu notificación por correo electrónico.

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 notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es tu ID del proyecto de Google 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

Donde:

  • 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 archivo de plantilla de notificaciones contiene la plantilla JSON que se activa en Cloud Storage y representa tu mensaje de notificación. Puedes incluir tu archivo de plantilla de notificaciones como una ruta de acceso mediante 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

Habilita las API de Cloud Build, Cloud Run, Pub/Sub, and BigQuery.

Habilita las API

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 Acceso de edición.

    1. Haz clic en Agregar otro rol.

    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.

Escribe un archivo de configuración de 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

Donde:

  • 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 notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es tu ID del proyecto de Google 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
    

    Donde:

    • 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 archivo de plantilla de notificaciones contiene la plantilla JSON que se activa en Cloud Storage y representa tu mensaje de notificación. Puedes incluir tu archivo de plantilla de notificaciones como una ruta de acceso mediante 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

Habilita las API de Cloud Build, Cloud Run, and Pub/Sub.

Habilita las API

Escribe un archivo de configuración de 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

Donde:

  • 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 de webhook.

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 notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es tu ID del proyecto de Google 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
    

    Donde:

    • 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

Establece la 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

Habilita las API de Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Habilita las API

Obtén y almacena credenciales

  1. Crea un espacio en Google Chat.

  2. Dentro del espacio creado, crea un webhook entrante para publicar mensajes de Cloud Build en Google Chat. La URL se verá 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.

Escribe un archivo de configuración de notificador

Escribe un archivo de configuración del notificador para configurar el notificador de Google Chat 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: 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

Donde:

  • 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 la URL de webhook de Google Chat.

Si quieres ver el ejemplo, consulta el archivo de configuración del notificador para el notificador de Google Chat.

Ejecuta la secuencia de comandos de automatización

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

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es tu ID del proyecto de Google 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

Donde:

  • 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

Establece la 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

Habilita las API de Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager.

Habilita las API

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 alcance repo.

    3. Haz clic en Generate token.

  2. Almacena tu token en Secret Manager:

    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 tu token de GitHub.

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

Escribe un archivo de configuración de plantilla

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

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 la plantilla para el notificador de problemas de GitHub.

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

Escribe un archivo de configuración de notificador

Escribe un archivo de configuración del notificador para configurar el notificador de Google Chat 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: 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

Donde:

  • 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 en la que 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 con 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 tu token de GitHub.

Si quieres ver el ejemplo, consulta el archivo de configuración del notificador para el notificador de Google Chat.

Para ver campos adicionales por los que puedes filtrar, consulta el recurso Compilar. Si quieres 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 de tu notificador, haz lo siguiente:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es tu ID del proyecto de Google 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

Donde:

  • 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 archivo de plantilla de notificaciones contiene la plantilla JSON que se activa en Cloud Storage y representa tu mensaje de notificación. Puedes incluir tu archivo de plantilla de notificaciones como una ruta de acceso mediante 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?