Cloud Build puede enviarte notificaciones a los canales que elijas para informarte de las actualizaciones del estado de tus compilaciones. Además de los notificadores que mantiene Cloud Build, como Slack o SMTP, también puedes usar la biblioteca proporcionada en el repositorio cloud-build-notifiers para crear tu propio notificador.
En esta página se explica cómo puedes crear tu propio notificador.
Antes de empezar
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Instala el lenguaje de programación Go.
Instala Google Cloud CLI.
Configurando
Abre una ventana de terminal en tu máquina.
Clona el repositorio cloud-build-notifiers y ve a él:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersAñade un directorio para tu propio notificador y ve a él, donde DIRECTORY_NAME es el nombre de tu directorio:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAMEInicializa los módulos de Go en el nuevo directorio, donde DIRECTORY_NAME es el nombre del nuevo directorio:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAMEAhora deberías ver un archivo
go.moden tu directorio.Añade la siguiente línea a tu archivo
go.modpara asegurarte de que usas la versión más reciente de los notifiers:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Ahora tus dependencias están configuradas y puedes crear tu propio notificador.
Crear tu propio notificador
cloud-build-notifiers contiene un directorio lib/notifiers. En el directorio lib/notifiers, verás un archivo llamado notifier.go. Este archivo contiene el framework que puedes usar para crear tu propio notificador.
Deberás definir dos métodos para crear un notificador en tu archivo principal.
En el nuevo directorio, crea un archivo llamado
main.go.En
main.go, importa el framework de la biblioteca de notificaciones y cualquier otra dependencia:Define un método principal para tu notificador. En este ejemplo,
loggeres el nombre del notificador:El método
mainusa el métodoMaindefinido en el archivonotifier.go, que se usa para configurar los archivos binarios del notificador.Define una struct para tu notificador, donde definirás las variables de tu interfaz. En este ejemplo,
loggeres el nombre del notificador:Añade la función de notificador. La interfaz de notificador se define mediante dos métodos:
SetUp: el métodoSetUpacepta una configuración, obtiene secretos y extrae filtros específicos de la configuración y los almacena como un predicado de Common Expression Language que se puede usar para enviar notificaciones. Para obtener más información sobre CEL, consulta el repositoriocel-spec.SendNotification: el métodoSendNotificationes el que se usa para enviar notificaciones al canal o servicio que hayas seleccionado.Puedes consultar la definición del notificador en
notifier.goy en la documentación de Go.En el siguiente ejemplo, la interfaz del notificador se define mediante
SetUpy el métodoSendNotificationpara imprimir los registros de compilación, conloggercomo nombre del notificador:El archivo
main.gofinal debería tener un aspecto similar al siguiente. En este ejemplo, se usaloggercomo nombre del notificador.
A continuación, configura tu notificador.
Configurar notificaciones
Escribe un archivo de configuración de notificador para configurar tu notificador y filtrar los eventos de compilación:
En el siguiente archivo de configuración de notificador de ejemplo, el campo
filterusa CEL con la variable disponiblebuildpara filtrar eventos de compilación con el estadoSUCCESS:Donde:
logging-samplees el nombre del notificador.
Para ver los campos adicionales por los que puedes filtrar, consulta el recurso Build. Para ver más ejemplos de filtrado, consulta Usar CEL para filtrar eventos de compilaciones.
Sube el archivo de configuración del notificador a un depósito de Cloud Storage:
Si no tienes ningún segmento de Cloud Storage, ejecuta el siguiente comando para crear uno. Sustituye BUCKET_NAME por el nombre que quieras darle al segmento, que debe cumplir los requisitos de nomenclatura.
gcloud storage buckets create gs://BUCKET_NAME/Sube el archivo de configuración del notificador a tu segmento:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAMEDonde:
BUCKET_NAMEes el nombre de tu segmento.CONFIG_FILE_NAMEes el nombre del archivo de configuración.
Crea y despliega tu notificador:
Crea un Dockerfile para
logging-sample:Crea y despliega el notificador con el siguiente archivo
cloudbuild.yaml.Donde:
_CONFIG_PATHes la ruta a la configuración de tu notificador, comogs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
Para ejecutar
cloudbuild.yaml, introduce la ruta del notificador como variable de sustitución.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEConcede permisos de Pub/Sub para crear tokens de autenticación en tu proyecto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorDonde:
PROJECT_IDes el ID de tu Google Cloud proyecto.PROJECT_NUMBERes el número de tu proyecto Google Cloud .
Crea una cuenta de servicio que represente la identidad de tu suscripción de Pub/Sub:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"Puedes usar
cloud-run-pubsub-invokero un nombre único en tu proyecto. Google CloudConcede a la cuenta de servicio
cloud-run-pubsub-invokerel permisoInvokerde Cloud Run:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invokerDonde:
SERVICE_NAMEes el nombre del servicio de Cloud Run en el que vas a desplegar la imagen.PROJECT_IDes el ID de tu Google Cloud proyecto.
Crea el tema
cloud-buildspara recibir mensajes de actualización de compilación de tu notificador:gcloud pubsub topics create cloud-buildsTambién puedes definir un nombre de tema personalizado en el archivo de configuración de compilación para que los mensajes se envíen al tema personalizado. En este caso, crearías un tema con el mismo nombre de tema personalizado:
gcloud pubsub topics create topic-namePara obtener más información, consulta Temas de Pub/Sub para notificaciones de compilación.
Crea un suscriptor de inserción de Pub/Sub para tu notificador:
gcloud pubsub subscriptions create subscriber-id \ --topic=cloud-builds \ --push-endpoint=service-url \ --push-auth-service-account=cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.comDonde:
subscriber-ides el nombre que quieres dar a tu suscripción.service-urles la URL generada por Cloud Run para tu nuevo servicio.project-ides el ID de tu Google Cloud proyecto.
Las notificaciones de tu proyecto de Cloud Build ya están configuradas. La próxima vez que invoques una compilación, recibirás una notificación en tu canal si la compilación coincide con el filtro que has configurado.
Notificaciones de prueba
Para probar las notificaciones del ejemplo que se usa en esta guía, puedes invocar una compilación ejecutando el comando gcloud builds submit.
En el siguiente ejemplo, especificamos success.yaml como ruta de configuración. Al ejecutar este comando, se debería generar una compilación mínima correcta. También deberías poder ver el resultado de los registros de compilación.
gcloud builds submit --no-source --config=success.yaml
Donde success.yaml es:
steps:
- name: busybox
args: ["true"]
En el siguiente ejemplo, especificamos failure.yaml como ruta de configuración. Al ejecutar este comando, la compilación debería fallar. En lugar de ver el resultado de los registros de compilación, verás un mensaje que te informa de que no se ha encontrado ninguna coincidencia para los filtros de CEL que has especificado en tu fuente.
gcloud builds submit --no-source --config=failure.yaml
Donde failure.yaml es:
steps:
- name: busybox
args: ["false"]
Si has creado un notificador configurado para realizar otra tarea que no sea registrar la salida en los registros de servicio de Cloud Run, también puedes ejecutar el comando gcloud builds submit para probar tus notificaciones.
Para examinar los errores asociados a tu compilación, consulta los registros de Cloud Run de tu servicio. Para obtener más información, consulta Ver registros en Cloud Run.
Siguientes pasos
- Consulta información sobre los notificadores de Cloud Build.
- Consulta cómo suscribirte a las notificaciones de compilación.