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.
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-notifiers
Añade un directorio para tu propio notificador y desplázate hasta él. DIRECTORY_NAME es el nombre de tu directorio:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAME
Inicializa 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_NAME
Ahora deberías ver un archivo
go.mod
en tu directorio.Añade la siguiente línea a tu archivo
go.mod
para 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,
logger
es el nombre del notificador:El método
main
usa el métodoMain
definido en el archivonotifier.go
, que se usa para configurar los archivos binarios del notificador.Define una estructura para tu notificador, donde definirás las variables de tu interfaz. En este ejemplo,
logger
es el nombre del notificador:Añade la función de notificador. La interfaz de notificador se define mediante dos métodos:
SetUp
: el métodoSetUp
acepta una configuración, obtiene secretos y extrae filtros específicos de la configuración, que 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étodoSendNotification
es el que se usa para enviar notificaciones al canal o servicio que hayas seleccionado.Puedes consultar la definición del notificador en
notifier.go
y en la documentación de Go.En el siguiente ejemplo, la interfaz del notificador se define mediante
SetUp
y el métodoSendNotification
para imprimir los registros de compilación, conlogger
como nombre del notificador:El archivo
main.go
final debería tener un aspecto similar al siguiente. En este ejemplo, se usalogger
como 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
filter
usa CEL con la variable disponiblebuild
para filtrar eventos de compilación con el estadoSUCCESS
:Donde:
logging-sample
es 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_NAME
Donde:
BUCKET_NAME
es el nombre de tu segmento.CONFIG_FILE_NAME
es 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_PATH
es 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_NAME
Concede 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.serviceAccountTokenCreator
Donde:
PROJECT_ID
es el ID de tu Google Cloud proyecto.PROJECT_NUMBER
es 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-invoker
o un nombre único en tu proyecto. Google CloudConcede a la cuenta de servicio
cloud-run-pubsub-invoker
el permiso Cloud RunInvoker
:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Donde:
SERVICE_NAME
es el nombre del servicio de Cloud Run en el que vas a desplegar la imagen.PROJECT_ID
es el ID de tu Google Cloud proyecto.
Crea el tema
cloud-builds
para recibir mensajes de actualización de compilación de tu notificador:gcloud pubsub topics create cloud-builds
Tambié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-name
Para 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.com
Donde:
subscriber-id
es el nombre que quieres dar a tu suscripción.service-url
es la URL generada por Cloud Run para tu nuevo servicio.project-id
es 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.