Automatizar 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 endpoint 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 del notificador que quieras.

Automatizar la configuración de las notificaciones

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

Slack

Configurando

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

Habilitando las API

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

Enable the APIs

Obtener y almacenar credenciales

  1. Crea una aplicación de Slack para el espacio de trabajo de Slack al que quieras enviar notificaciones.

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

  3. Ve a tu aplicación 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 Secret Manager:

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

      Abre la página Secret Manager.

    2. Haz clic en Crear secreto.

    3. Introduce un nombre para el secreto.

    4. En Valor secreto, añade la URL del webhook entrante de tu aplicación de Slack.

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

Escribir un archivo de configuración de notificador

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

En el siguiente archivo de configuración de notificador de ejemplo, el campo filter usa Common Expression Language con la variable disponible build para filtrar eventos de compilación con el 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 la URL del webhook de Slack almacenada en Secret Manager. El nombre de la variable que especifique aquí debe coincidir con el campo name de secrets.
  • project-id es el ID de tu Google Cloud proyecto.
  • secret-name es el nombre del secreto que contiene la URL de tu 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 que se enviará a tu espacio de Slack.

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

Ejecutar la secuencia de comandos de automatización

Para automatizar la configuración de las notificaciones de tu notificador, sigue estos pasos:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es el ID de tu proyecto Google Cloud .
    • region es la región en la que se va a desplegar 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 al archivo de configuración de tus notificaciones.
  • template-path es la ruta al archivo de plantilla de notificaciones. El archivo de plantilla de notifiers contiene la plantilla JSON alojada en Cloud Storage y representa el mensaje de notificación. Puedes incluir el archivo de plantilla de tus notificaciones como una ruta mediante esta variable o en el campo uri de tu archivo de configuración de notificaciones.
  • secret-name es el nombre del secreto almacenado en Secret Manager.

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

** NOTIFIER SETUP COMPLETE **

Tu notificador ya está configurado. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para ver las instrucciones de uso asociadas a la secuencia de comandos.

SMTP

Configurando

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

Habilitando las API

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

Enable the APIs

Almacenar credenciales

  1. Almacena la contraseña de la cuenta de correo del remitente en Secret Manager:

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

    Abre la página Secret Manager.

  3. Haz clic en Crear secreto.

  4. Introduce un nombre para el secreto.

  5. En Valor secreto, añade la contraseña de la cuenta de correo del remitente.

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

Escribir 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 archivo de configuración de notificador de ejemplo, el campo filter usa Common Expression Language con la variable disponible build para filtrar eventos de compilación con el 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 gestionará las solicitudes SMTP. Este valor debe especificarse como una cadena.
  • sender-email es la dirección de correo de la cuenta del remitente que ve el server-host-name especificado.
  • from-email es la dirección de correo que ven los destinatarios.
  • recipient-email es una lista de una o varias 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 del remitente almacenada en Secret Manager. El nombre de la variable que especifiques aquí debe coincidir con el campo name de secrets.
  • project-id es el ID de tu Google Cloud proyecto.
  • secret-name es el nombre de tu secreto que contiene la contraseña de la cuenta de correo 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 de notificación.

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

Ejecutar la secuencia de comandos de automatización

Para automatizar la configuración de las notificaciones de tu notificador, sigue estos pasos:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es el ID de tu proyecto Google Cloud .
    • region es la región en la que se va a desplegar 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 al archivo de configuración de tus notificaciones.
  • template-path es la ruta al archivo de plantilla de notificaciones. El archivo de plantilla de notifiers contiene la plantilla JSON alojada en Cloud Storage y representa el mensaje de notificación. Puedes incluir el archivo de plantilla de tus notificaciones como una ruta mediante esta variable o en el campo uri de tu archivo de configuración de notificaciones.
  • secret-name es el nombre del secreto almacenado en Secret Manager.

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

** NOTIFIER SETUP COMPLETE **

Tu notificador ya está configurado. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para ver las instrucciones de uso asociadas a la secuencia de comandos.

BigQuery

Configurando

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

Habilitando las API

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

Enable the APIs

Concediendo permisos

Concede a tu cuenta de servicio de Cloud Run permiso para crear y escribir tablas de BigQuery, así como para obtener datos de Artifact Registry relacionados con tu compilación:

  1. Ve a la página Gestión de identidades y accesos de la Google Cloud consola:

    Abre la página Gestión de identidades y accesos.

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

    Tu cuenta de servicio predeterminada de Compute Engine será similar a la siguiente, donde project-number es el número de tu proyecto:

        project-number-compute@developer.gserviceaccount.com
    
  3. Haga clic en el icono del lápiz de la fila que contiene su cuenta de servicio predeterminada de Compute Engine.

    Verás la pestaña Editar acceso.

    1. Haz clic en Añadir otro rol.

    2. Añade los siguientes roles:

      • Lector de Artifact Registry
      • Editor de datos de BigQuery

        El rol Lector de Artifact Registry te permite obtener datos de tus imágenes. El rol Editor de datos de BigQuery le permite leer y escribir datos.

    3. Haz clic en Guardar.

Escribir 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 notificador, el campo filter usa Common Expression Language con la variable build para filtrar 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 Google Cloud proyecto.
  • dataset-name es el nombre que quieres dar al conjunto de datos.
  • table-name es el nombre que quieres dar a la tabla.

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

  • una tabla que no existe
  • una tabla vacía sin esquema
  • una tabla que ya exista con un esquema que coincida con las especificaciones del esquema del 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 va a insertar en tu tabla de BigQuery.

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

Ejecutar la secuencia de comandos de automatización

Para automatizar la configuración de las notificaciones de tu notificador, sigue estos pasos:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es el ID de tu proyecto Google Cloud .
    • region es la región en la que se va a desplegar 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 al archivo de configuración de tus notificaciones.
    • template-path es la ruta al archivo de plantilla de notificaciones. El archivo de plantilla de notifiers contiene la plantilla JSON alojada en Cloud Storage y representa el mensaje de notificación. Puedes incluir el archivo de plantilla de tus notificaciones como una ruta mediante esta variable o en el campo uri de tu archivo de configuración de notificaciones.

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

    ** NOTIFIER SETUP COMPLETE **
    

    Tu notificador ya está configurado. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para consultar las instrucciones de uso asociadas a la secuencia de comandos.

HTTP

Configurando

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

Habilitando las API

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

Enable the APIs

Escribir 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 archivo de configuración de notificador de ejemplo, el campo filter usa Common Expression Language con la variable disponible build para filtrar eventos de compilación con el 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 quieres especificar como servidor receptor.
  • 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 JSON del endpoint del webhook.

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

Ejecutar la secuencia de comandos de automatización

Para automatizar la configuración de las notificaciones de tu notificador, sigue estos pasos:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es el ID de tu proyecto Google Cloud .
    • region es la región en la que se va a desplegar 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 al archivo de configuración de tus notificaciones.

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

** NOTIFIER SETUP COMPLETE **

Tu notificador ya está configurado. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para consultar las instrucciones de uso asociadas a la secuencia de comandos.

Google Chat

Configurando

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

Habilitando las API

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

Enable the APIs

Obtener y almacenar credenciales

  1. Crea un espacio en Google Chat.

  2. En el espacio creado, crea un webhook entrante para publicar mensajes de Cloud Build en Google Chat. La URL tendrá un aspecto similar al siguiente:

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

  3. Almacena la URL del webhook entrante en Secret Manager:

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

      Abre la página Secret Manager.

    2. Haz clic en Crear secreto.

    3. Introduce un nombre para el secreto.

    4. En Valor secreto, añade la URL del webhook entrante de tu espacio de Google Chat.

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

Escribir un archivo de configuración de notificador

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

En el siguiente archivo de configuración de notificador de ejemplo, el campo filter usa Common Expression Language con la variable disponible build para filtrar eventos de compilación con el 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 la URL del webhook de Google Chat almacenada en Secret Manager. El nombre de la variable que especifique aquí debe coincidir con el campo name de secrets.
  • project-id es el ID de tu Google Cloud proyecto.
  • secret-name es el nombre de tu secreto que contiene la URL de webhook de Google Chat.

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

Ejecutar la secuencia de comandos de automatización

Para automatizar la configuración de las notificaciones de tu notificador, sigue estos pasos:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es el ID de tu proyecto Google Cloud .
    • region es la región en la que se va a desplegar 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 al archivo de configuración de tus notificaciones.
  • secret-name es el nombre del secreto almacenado en Secret Manager.

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

** NOTIFIER SETUP COMPLETE **

Tu notificador ya está configurado. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para ver las instrucciones de uso asociadas a la secuencia de comandos.

Problemas de GitHub

Configurando

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

Habilitando las API

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

Enable the APIs

Obtener y almacenar credenciales

  1. Crea un token de acceso personal de GitHub:

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

    3. Haz clic en Generar token.

  2. Almacena tu token en Secret Manager:

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

      Abre la página Secret Manager.

    2. Haz clic en Crear secreto.

    3. Introduce un nombre para el secreto.

    4. En Valor secreto, añade tu token de GitHub.

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

Escribir un archivo de configuración de plantilla

Escribe un archivo de configuración de plantilla para describir el formato que deben tener las incidencias de GitHub creadas:

En el siguiente archivo de plantilla de configuración 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}})"
}

Para ver el ejemplo, consulta el archivo de configuración de la plantilla del notificador de incidencias de GitHub.

Se pueden definir campos adicionales a partir de los parámetros de cuerpo disponibles del endpoint de la API de GitHub para crear un problema.

Escribir un archivo de configuración de notificador

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

En el siguiente archivo de configuración de notificador de ejemplo, el campo filter usa Common Expression Language con la variable disponible build para filtrar eventos de compilación con el 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 especifique aquí debe coincidir con el campo name de secrets.
  • project-id-notifiers-config es la ubicación en la que se subirá tu plantilla. El bucket se creará si aún no existe.
  • template-file-name es el nombre del 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 Google Cloud proyecto.
  • secret-name es el nombre del secreto que contiene tu token de GitHub.

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

Para ver los campos adicionales por los que puedes filtrar, consulta el recurso Build. Para ver más ejemplos de filtrado, consulta el artículo Usar CEL para filtrar eventos de compilaciones.

Ejecutar la secuencia de comandos de automatización

Para automatizar la configuración de las notificaciones de tu notificador, sigue estos pasos:

  1. Clona el repositorio cloud-build-notifiers.

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

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

    Donde:

    • project-id es el ID de tu proyecto Google Cloud .
    • region es la región en la que se va a desplegar 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 al archivo de configuración de tus notificaciones.
  • template-path es la ruta al archivo de plantilla de notificaciones. El archivo de plantilla de notifiers contiene la plantilla JSON alojada en Cloud Storage y representa el mensaje de notificación. Puedes incluir el archivo de plantilla de tus notificaciones como una ruta mediante esta variable o en el campo uri de tu archivo de configuración de notificaciones.
  • secret-name es el nombre del secreto almacenado en Secret Manager.

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

** NOTIFIER SETUP COMPLETE **

Tu notificador ya está configurado. Puedes ver la secuencia de comandos completa en el repositorio cloud-build-notifiers o ejecutar ./setup.sh --help para ver las instrucciones de uso asociadas a la secuencia de comandos.

Siguientes pasos