Suscribirse a las notificaciones de compilación

Cloud Build publica mensajes en un tema de Google Pub/Sub cuando el estado de la compilación cambia, como cuando esta se crea, cuando cambia a un estado en funcionamiento o cuando finaliza.

El tema de Pub/Sub en el que Cloud Build publica estos mensajes de actualización de compilación se llama cloud-builds. Cada mensaje contiene una representación de string JSON en base64 del recurso de compilación en el atributo message.data. El ID único y el estado de la compilación se pueden encontrar en el campo message.attributes.

Puedes usar un modelo de envío o extracción para las suscripciones de Pub/Sub.

Recibe notificaciones de compilación

Sigue estos pasos para recibir notificaciones de compilación:

  1. Habilita la API de Cloud Build

    Habilita la API de Cloud Build

    Cuando habilitas la API de Cloud Build, la cuenta de servicio del Agente de servicio de Cloud Build se agrega a tu proyecto de forma automática. La cuenta de servicio te permite recibir notificaciones de compilación a través de Pub/Sub.

    La cuenta de servicio tiene el siguiente formato, en el que project-number es tu número de proyecto:

     service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
    

    Si no se muestra la cuenta de servicio del Agente de servicio de Cloud Build en tu página de IAM o no puedes recibir notificaciones a través de Pub/Sub, sigue estos pasos para agregar la cuenta de servicio del Agente de servicio de Cloud Build a tu proyecto:

    1. Abre la página de IAM en la consola de Google Cloud.

      Abrir la página IAM

    2. Haz clic en Otorgar acceso.

    3. Agrega el siguiente principal, en el que project-number es tu número de proyecto:

      service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
      
    4. Selecciona Agente de servicio > Agente de servicio de Cloud Build como tu función.

    5. Haz clic en Guardar.

  2. Habilita la API de Pub/Sub:

    Habilitar la API de Pub/Sub

  3. Crea el tema cloud-builds:

    gcloud pubsub topics create cloud-builds
    

    Para obtener más información sobre cómo administrar temas de Pub/Sub, consulta Administra temas y suscripciones.

Push

Las suscripciones de envío entregan mensajes a un extremo HTTP que definas. Los mensajes se entregan apenas se publican en el tema.

Los mensajes enviados desde suscripciones de envío se ven de la siguiente manera:

{
  "message": {
    "attributes": {
      "buildId": "abcd-efgh...",
      "status": "SUCCESS"
    },
    "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
    "message_id": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

Extracción

Las suscripciones de extracción envían un mensaje cuando la aplicación suscrita realiza una consulta a estas. Los mensajes se entregan cuando se consulta a la suscripción.

Los mensajes enviados desde suscripciones de extracción se ven de la siguiente manera:

{
  "receivedMessages": [
    {
      "ackId": "dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK...",
      "message": {
        "attributes": {
          "buildId": "abcd-efgh-...",
          "status": "SUCCESS"
        },
        "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
        "messageId": "19917247034"
      }
    }
  ]
}

¿Cómo me suscribo para compilar notificaciones de actualización?

Tienes una gran variedad de opciones para suscribirte y compilar notificaciones de actualización. Por ejemplo, puedes enviar mensajes a un extremo o escribir una app de Python para que sondee tu suscripción.

A fin de obtener información sobre cómo configurar las suscripciones de Pub/Sub para actualizaciones de compilación, consulta la Guía de suscriptores de Pub/Sub. También puedes obtener más información sobre las Bibliotecas cliente de Pub/Sub, que facilitan el desarrollo de aplicaciones para suscriptores.

Para obtener más información sobre cómo usar Pub/Sub para enviar actualizaciones de compilación a servicios como Slack o por correo electrónico, consulta Notificadores de Cloud Build.