Configurar notificaciones de Pub/Sub

Puedes recibir notificaciones de cambios en tus repositorios de Google Cloud con Pub/Sub. Estas notificaciones te informan cuando un usuario crea un repositorio nuevo, borra un repositorio o envía un cambio en un repositorio existente. Puedes elegir configurar notificaciones para repositorios específicos o para todo un proyecto de Google Cloud.

Para obtener más información sobre Pub/Sub, consulta ¿Qué es Pub/Sub?

Antes de comenzar

  • Si aún no lo hiciste, crea un repositorio.
  • Verifica que tengas los permisos adecuados para crear temas y suscripciones. Para obtener más información, consulta Control de acceso.
  • Asegúrate de tener una cuenta de servicio que pueda publicar en tu tema. De forma predeterminada, Cloud Source Repositories usa la cuenta de servicio predeterminada de Compute Engine para publicar mensajes. Para obtener más información, consulta Notificaciones de Pub/Sub para Cloud Source Repositories.

Crea un tema de Pub/Sub

Debes crear un tema de Pub/Sub por cada repositorio o proyecto de Cloud Source Repositories para el que deseas recibir notificaciones. Puedes crear un tema con Google Cloud Console o la herramienta de línea de comandos de gcloud.

Cuando creas un tema, necesitas usar un URI calificado para tu repositorio. Un URI calificado tiene el siguiente formato:

projects/[PROJECT_ID]/topics/[TOPIC_NAME]

Donde:

  • [PROJECT_ID] es el ID de tu proyecto de Google Cloud.
  • [TOPIC_NAME] es el nombre del tema.

Para crear un tema, sigue estos pasos.

Console

  1. En la consola de Google Cloud, ve a la página Temas de Pub/Sub.

    Ir a la página Temas

  2. Haz clic en Crear tema.

  3. Ingresa un nombre de tema con el URI:

    projects/[PROJECT_ID]/topics/[TOPIC_NAME]
    

    Donde:

    • [PROJECT_ID] es el ID de tu proyecto de Google Cloud.
    • [TOPIC_NAME] es el nombre del tema.
  4. Haz clic en Crear.

    Se abrirá la página Detalles del tema.

gcloud

En una ventana de la terminal, ejecuta el siguiente comando:

gcloud pubsub topics create projects/[PROJECT_ID]/topics/[TOPIC_NAME]

Donde:

  • [PROJECT_ID] es el ID de tu proyecto de Google Cloud.
  • [TOPIC_NAME] es el nombre del tema.

Para obtener más información sobre el comando gcloud pubsub topics, consulta la documentación de topics.

Crea una suscripción a Pub/Sub

Para recibir eventos publicados de un tema, debes crear una suscripción a Pub/Sub.

Una app de suscriptor recibe mensajes del tema de tu repositorio. En respuesta a los eventos de tu repositorio, los suscriptores pueden enviar notificaciones o activar una compilación.

Para crear una suscripción, sigue estos pasos.

Console

  1. En la consola de Google Cloud, ve a la página Temas de Pub/Sub.

    Ir a la página Temas

  2. Haz clic en el nombre del tema de tu proyecto.

  3. Haz clic en Crear suscripción.

    Se abrirá la página Agregar suscripción al tema.

  4. Ingresa un nombre de suscripción.

    projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
    

    Donde:

    • [PROJECT_ID] es el ID de tu proyecto de Google Cloud.
    • [SUBSCRIPTION_NAME] es el nombre de la suscripción a Pub/Sub.
  5. Configura el Tipo de entrega como Extracción.

  6. Haz clic en Crear.

gcloud

En una ventana de la terminal, ejecuta el siguiente comando:

gcloud pubsub subscriptions create [SUBSCRIPTION_NAME] --topic=[TOPIC_NAME]

Donde:

  • [SUBSCRIPTION_NAME] es el nombre de la suscripción a Pub/Sub.
  • [TOPIC_NAME] es el nombre del tema.

Para obtener más información sobre el comando gcloud pubsub subscriptions, consulta la documentación de subscriptions.

Agrega un tema

Puedes asociar un tema de Pub/Sub a un repositorio o proyecto de Google Cloud con Google Cloud CLI.

Para asociar un tema a un proyecto completo, ingresa el siguiente comando:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

Donde:

  • [TOPIC_NAME] es el nombre del tema de Pub/Sub.
  • [SERVICE_ACCOUNT_NAME] es el nombre de tu cuenta de servicio de Cloud Build.

Para asociar un tema a un repositorio específico, ingresa el siguiente comando:

gcloud source repos update [REPOSITORY_NAME] --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

Donde:

  • [REPOSITORY_NAME] es el nombre de tu repositorio de Google Cloud.
  • [TOPIC_NAME] es el nombre del tema de Pub/Sub.
  • [SERVICE_ACCOUNT_NAME] es el nombre de tu cuenta de servicio de Cloud Build.

La cuenta de servicio debe estar en el mismo proyecto que el repositorio y debe tener el permiso pubsub.topics.publish para publicar un mensaje sobre el tema especificado. Debes tener el permiso iam.serviceAccounts.actAs en la cuenta de servicio. Si no se especifica la cuenta de servicio, se usa automáticamente la cuenta de servicio predeterminada de Compute Engine.

Quita un tema

Puedes quitar la asociación entre un proyecto o repositorio y un tema de Pub/Sub con Google Cloud CLI.

Ingresa el siguiente comando para quitar un tema de un proyecto en su totalidad:

gcloud source project-configs update --remove-topic=[TOPIC_NAME]

Ingresa el siguiente comando para quitar un tema de un repositorio específico:

gcloud source repos update [REPOSITORY_NAME] --remove-topic=[TOPIC_NAME]

Configura el formato del tema

Las notificaciones de Cloud Source Repositories pueden usar el formato de Protocol Buffers o JSON. Para configurar el formato de un tema, puedes usar el parámetro --message-format cuando agregues el tema:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --message-format=[json|protobuf]

También puedes usar el comando set-format:

gcloud source project-configs update --update-topic=[TOPIC_NAME] --message-format=[json|protobuf]

¿Qué sigue?