Cloud Build puede notificarte sobre actualizaciones de tu estado de compilación mediante el envío de notificaciones a los canales deseados. 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 crear tu propio notificador.
Antes de comenzar
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Instala el lenguaje de programación Go.
Instala Google Cloud CLI.
Configuración
Abre una ventana de la terminal en tu máquina.
Clona y navega al repositorio cloud-build-notifiers:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiers
Agrega un directorio para tu propio notificador y navega hasta él, en el que DIRECTORY_NAME es el nombre de tu directorio:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAME
Inicializa los módulos de Go en tu directorio nuevo, en el que DIRECTORY_NAME es el nombre de tu directorio nuevo:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAME
Ahora deberías ver un archivo
go.mod
en tu directorio.Agrega la siguiente línea a tu archivo
go.mod
para asegurarte de usar la versión más reciente de los notificadores:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Tus dependencias ya están configuradas y estás listo para crear tu propio notificador.
Crea 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 directorio nuevo, crea un archivo llamado
main.go
.En
main.go
, importa el framework de la biblioteca de notificadores y cualquier otra dependencia:Define un método principal para el 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 objetos binarios del notificador.Define una estructura para tu notificador, en la que definirás las variables de la interfaz. En este ejemplo,
logger
es el nombre del notificador. P. ej.
A continuación, agregarás la funcionalidad del notificador. La interfaz del notificador se define con dos métodos:
SetUp
: El métodoSetUp
acepta una configuración, recupera 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étodoSendNotification
es el que se usa para enviar notificaciones al canal o servicio deseados.La definición del notificador está disponible en
notifier.go
y en la documentación de Go.En el siguiente ejemplo, la interfaz del notificador se define con
SetUp
y el métodoSendNotification
para imprimir los registros de compilación, conlogger
como el nombre de tu notificador:Tu archivo final
main.go
debería ser similar al siguiente archivo. En este Por ejemplo,logger
se usa como nombre del notificador.Ahora que tienes definido tu notificador, puedes seguir los pasos siguientes para configurar tu notificador.
Configura notificaciones
Escribe un archivo de configuración de notificador para configurar tu notificador y filtrar los eventos de compilación:
En el siguiente ejemplo de archivo de configuración del notificador, el campo
filter
usa CEL con la variable disponible,build
, para filtrar los eventos de compilación con un estadoSUCCESS
:Aquí:
logging-sample
es el nombre del notificador.
Para ver campos adicionales por los que puedes filtrar, consulta el recurso Compilar. Si deseas ver ejemplos adicionales de filtros, consulta Usa CEL para filtrar eventos de compilación.
Sube tu archivo de configuración de notificador a un bucket de Cloud Storage:
Si no tienes un depósito de Cloud Storage, ejecuta el siguiente comando para crear un depósito, en el que BUCKET_NAME es el nombre que deseas asignar a tu depósito, sujeto a los requisitos de nombres.
gcloud storage buckets create gs://BUCKET_NAME/
Sube el archivo de configuración del notificador a tu bucket:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAME
Aquí:
BUCKET_NAME
es el nombre de tu depósito.CONFIG_FILE_NAME
es el nombre de tu archivo de configuración.
Compila e implementa tu notificador:
Crea un Dockerfile para
logging-sample
:Compila e implementa el notificador con el siguiente archivo
cloudbuild.yaml
.Aquí:
_CONFIG_PATH
es la ruta de acceso a la configuración del notificador, comogs://BUCKET_NAME/CONFIG_FILE_NAME.yaml
.
Para ejecutar
cloudbuild.yaml
, pasa la ruta del notificador como una variable de sustitución.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAME
Otorga 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
Aquí:
PROJECT_ID
es el ID de tu proyecto de Google Cloud.PROJECT_NUMBER
es el número de proyecto de Google Cloud.
Crea una cuenta de servicio para representar tu identidad de 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 dentro de tu proyecto de Google Cloud.Otorga el permiso
Invoker
de Cloud Run a la cuenta de servicio decloud-run-pubsub-invoker
:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Aquí:
SERVICE_NAME
es el nombre del servicio de Cloud Run en el que se implementa la imagen.PROJECT_ID
es el ID de tu proyecto de Google Cloud.
Crea el tema
cloud-builds
a fin de recibir mensajes de actualización de compilación para tu notificador:gcloud pubsub topics create cloud-builds
Crea un suscriptor de envío 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
Aquí:
subscriber-id
es el nombre que quieres darle a tu suscripción.service-url
es la URL generada por Cloud Run para tu nuevo servicio.project-id
es el ID de tu proyecto de Google Cloud.
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 configuraste.
Prueba las notificaciones
Para probar la funcionalidad de notificación para el ejemplo usado en esta guía, puedes
invocar una compilación mediante la ejecución del comando gcloud builds submit
En el siguiente ejemplo, especificamos success.yaml
como la ruta de configuración. Ejecutar este comando debería dar como resultado una compilación mínima exitosa. También deberías ver un resultado de los registros de tu compilación.
gcloud builds submit --no-source --config=success.yaml
En el ejemplo anterior, success.yaml
es:
steps:
- name: busybox
args: ["true"]
En el siguiente ejemplo, especificamos failure.yaml
como la ruta de configuración. Si ejecutas este comando, la compilación fallará. En lugar de ver un resultado de tus registros de compilación, verás un resultado que te informa que no hubo ninguna coincidencia para los filtros de CEL que especificaste en la fuente.
gcloud builds submit --no-source --config=failure.yaml
En el ejemplo anterior, failure.yaml
es:
steps:
- name: busybox
args: ["false"]
Si creaste un notificador que está configurado para realizar otra tarea que no sea el resultado del registro en los registros del servicio de Cloud Run, también puedes ejecutar el comando gcloud builds submit
para probar la funcionalidad de notificación. Para examinar los errores asociados con tu compilación, verifica los registros de Cloud Run de tu servicio. Para obtener más información, consulta Visualiza los registros en Cloud Run.
¿Qué sigue?
- Obtén información sobre los notificadores de Cloud Build.
- Obtén más información sobre cómo suscribirte a las notificaciones de compilación.