Los activadores de Pub/Sub de Cloud Build te permiten ejecutar compilaciones como respuesta a eventos publicados en Pub/Sub. Google Cloud Puede usar la información de un evento de Pub/Sub para parametrizar su compilación y decidir si se debe ejecutar en respuesta al evento. Los activadores de Pub/Sub se pueden configurar para que escuchen cualquier tema de Pub/Sub.
En esta página se explica cómo crear un activador de Pub/Sub para automatizar compilaciones en respuesta a eventos en Artifact Registry y Cloud Storage.
Limitaciones
Los activadores de Cloud Build Pub/Sub no se admiten cuando se usa Controles de Servicio de VPC.
Antes de empezar
-
Enable the Cloud Build API.
- Asegúrate de que tu código fuente contenga un archivo de configuración de compilación o un
Dockerfile
en el repositorio. Para usar los comandos
gcloud
de esta página, instala Google Cloud CLI.
Crear un activador de compilación que responda a eventos de Artifact Registry
Puedes crear un activador de Pub/Sub que responda a eventos de Artifact Registry, como cuando se insertan, etiquetan o eliminan imágenes. En esta sección se explica cómo crear un activador de Pub/Sub que invoque una compilación cuando se inserte una etiqueta nueva en una imagen. Si no conoces Artifact Registry, consulta la información general de Artifact Registry.
Consola
Para crear un activador que detecte una nueva etiqueta insertada en una imagen de Artifact Registry mediante la consola, sigue estos pasos: Google Cloud
Abre la página Activadores:
Selecciona tu proyecto en la parte superior de la página y haz clic en Abrir.
Haz clic en Crear activador.
Introduce los siguientes ajustes del activador:
- Nombre: introduce un nombre para el activador.
Región: selecciona la región del activador.
- Si el archivo de configuración de compilación asociado al activador especifica un grupo privado, Cloud Build usará el grupo privado para ejecutar la compilación. En este caso, la región que especifiques en el activador debe coincidir con la región en la que hayas creado tu grupo privado.
- Si el archivo de configuración de compilación asociado al activador no especifica un grupo privado, Cloud Build usará el grupo predeterminado para ejecutar la compilación en la misma región que el activador.
Descripción (opcional): escribe una descripción del activador.
Evento: selecciona Mensaje de Pub/Sub como evento para invocar el activador.
Suscripción: selecciona el tema de Pub/Sub al que quieres suscribirte para que sea el evento de activación. En el menú desplegable, verás todos los temas que hay en tu proyecto.
- Tema de Pub/Sub: selecciona el tema
gcr
en el menú desplegable o crea el tema manualmente siguiendo las instrucciones de Configurar notificaciones de Pub/Sub.
- Tema de Pub/Sub: selecciona el tema
Fuente: selecciona la fuente que se va a compilar cuando se ejecute el activador de Pub/Sub. Puedes especificar 1.ª generación o 2.ª generación como fuente.
Repositorio: en la lista de repositorios disponibles, selecciona el que quieras.
Rama o Etiqueta: especifica una expresión regular con el valor de la rama o de la etiqueta que quieras que coincida. Para obtener información sobre la sintaxis válida de las expresiones regulares, consulta la sintaxis de RE2.
Control de comentarios: si has seleccionado Solicitud de extracción (solo aplicación de GitHub) como Evento, elige una de las siguientes opciones para controlar si el activador ejecutará automáticamente una compilación:
Obligatorio excepto para propietarios y colaboradores: cuando un propietario o colaborador del repositorio crea o actualiza una solicitud de extracción, el activador ejecuta automáticamente las compilaciones. Si un colaborador externo inicia la acción, las compilaciones solo se ejecutarán después de que un propietario o colaborador añada un comentario
/gcbrun
en la solicitud de extracción.Obligatorio: cuando cualquier colaborador cree o actualice una solicitud de extracción, las compilaciones solo se ejecutarán después de que un propietario o colaborador comente
/gcbrun
en la solicitud de extracción. Las compilaciones se ejecutan cada vez que se hace un cambio en una solicitud de extracción.No es obligatorio: cuando cualquier colaborador crea o actualiza una solicitud de extracción, los activadores ejecutan las compilaciones automáticamente.
Configuración: selecciona el archivo de configuración de compilación (ubicado en tu repositorio remoto) o crea un archivo de configuración de compilación insertado para usarlo en tu compilación.
- Tipo: selecciona el tipo de configuración que quieras usar en tu compilación.
- Archivo de configuración de Cloud Build (yaml o json): usa un archivo de configuración de compilación para tu configuración.
- Dockerfile usa un
Dockerfile
para tu configuración. - Buildpacks usa paquetes de compilación para tu configuración.
Ubicación: especifica la ubicación de la configuración.
- Repositorio: si el archivo de configuración se encuentra en tu repositorio remoto, indica la ubicación del archivo de configuración de compilación, el directorio
Dockerfile
o el directorio de paquetes de compilación. Si el tipo de configuración de compilación esDockerfile
o un paquete de compilación, tendrás que proporcionar un nombre para la imagen resultante y, opcionalmente, un tiempo de espera para la compilación. Cuando hayas proporcionado el nombre de laDockerfile
o de la imagen del buildpack, verás una vista previa del comandodocker build
opack
que ejecutará tu compilación. - Variables de entorno de buildpack (opcional): si has seleccionado
buildpacks
como tipo de configuración, haz clic en Añadir variable de entorno de paquete para especificar las variables de entorno y los valores de tu buildpack. Para obtener más información sobre las variables de entorno de los paquetes de compilación, consulte Variables de entorno. En línea: si has seleccionado Archivo de configuración de Cloud Build (yaml o json) como opción de configuración, puedes especificar la configuración de compilación en línea. Haz clic en Abrir editor para escribir el archivo de configuración de la compilación en la consolaGoogle Cloud con la sintaxis YAML o JSON. Haz clic en Hecho para guardar la configuración de compilación.
- Repositorio: si el archivo de configuración se encuentra en tu repositorio remoto, indica la ubicación del archivo de configuración de compilación, el directorio
- Tipo: selecciona el tipo de configuración que quieras usar en tu compilación.
Sustituciones (opcional): si has seleccionado el archivo de configuración de compilación como opción de configuración de compilación, puedes definir variables de sustitución específicas del activador en este campo.
En el siguiente ejemplo, queremos obtener el nombre de la etiqueta de imagen de la carga útil y la acción asociada al evento
gcr
. Para ello, crea variables de sustitución mediante enlaces de carga útil.Especifique las siguientes variables y valores:
Nombre de la variable Valor de la variable _IMAGE_TAG
$(body.message.data.tag)
_ACTION
$(body.message.data.action)
body.message
hace referencia al PubSubMessage publicado por los editores y consumido por los suscriptores. Para ver más ejemplos de la carga útil de notificaciones de Pub/Sub, consulta Ejemplos de notificaciones.Filtros (opcional): puedes crear filtros en un activador que determinen si el activador ejecutará una compilación en respuesta a la carga útil entrante especificando filtros en las variables de sustitución. La expresión de filtro debe dar como resultado
true
para que se ejecute una compilación.Recomendamos usar filtros al configurar activadores de Pub/Sub en temas con varios mensajes. Los filtros se pueden usar para controlar con precisión las compilaciones que se ejecutan en respuesta a los mensajes de Pub/Sub entrantes. Para obtener información sobre los riesgos asociados a la configuración de un activador sin filtros, consulta Riesgos asociados a un activador sin filtros.
En el siguiente ejemplo, queremos que el activador ejecute una compilación si se envía una etiqueta nueva a una imagen. Usamos operadores de condición de filtro para comprobar si la variable
_IMAGE_TAG
coincide con un nombre de etiqueta y si la variable_ACTION
coincide conINSERT
para buscar datos recién añadidos.Especifique lo siguiente como filtros:
_IMAGE_TAG
!=""
_ACTION
==INSERT
La sintaxis de filtrado de los activadores de Pub/Sub usa el lenguaje de expresión común (CEL) para evaluar las expresiones. Para obtener más información sobre CEL, consulta el repositorio cel-spec.
- Haz clic en Crear para crear el activador de compilación.
gcloud
Para crear un activador que detecte una nueva etiqueta insertada en una imagen de Artifact Registry mediante los comandos gcloud
, siga estos pasos:
- Abre una ventana de terminal.
Ejecuta el comando
gcloud
para crear un activador de compilación en tu proyecto. En el ejemplo siguiente, el activador se ha configurado para responder a las compilaciones con una etiqueta que coincida conprod
y una acción que coincida conINSERT
en función de la carga útil especificada, definida por la variable de sustitución_IMAGE_TAG
.gcloud builds triggers create pubsub \ --region=REGION \ --name=TRIGGER_NAME \ --repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME \ --topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --build-config=BUILD_CONFIG \ # or --inline-config=INLINE_BUILD_CONFIG --substitutions=\ '_IMAGE_TAG_="$(body.message.data.tag)",' \ '_ACTION="$(body.message.data.action)"' \ --subscription-filter='_IMAGE_TAG != "" && _ACTION == "INSERT"' \ --tag=TAG_NAME # or --branch=BRANCH_NAME
Donde:
- REGION es la región de tu activador.
- TRIGGER_NAME es el nombre del activador.
- PROJECT_ID es el ID de tu proyecto de Cloud.
- CONNECTION_NAME es el nombre de tu conexión de host.
- REPO_NAME es el nombre de tu repositorio.
- TOPIC_NAME es el nombre del tema de Pub/Sub al que te has suscrito.
- BUILD_CONFIG es la ruta al archivo de configuración de compilación.
- INLINE_BUILD_CONFIG es la ruta a tu archivo de configuración de compilación insertado.
- TAG_NAME es el nombre de la etiqueta si quieres configurar el activador para que se compile en una etiqueta.
- BRANCH_NAME es el nombre de tu rama si quieres configurar el activador para que se compile en una rama.
Crear un activador de compilación que responda a eventos de Cloud Storage
Puedes crear un activador de Pub/Sub que responda a eventos de Cloud Storage, como cuando se envía un nuevo archivo binario a un segmento de almacenamiento. En esta sección se explica cómo crear un activador Pub/Sub que responda con una compilación al implementar un nuevo archivo binario en un bucket subido. Si no conoces Cloud Storage, consulta las guías de inicio rápido.
Consola
Para crear un activador que detecte eventos de Cloud Storage mediante la Google Cloud consola, sigue estos pasos:
Abre la página Activadores:
Selecciona tu proyecto en la parte superior de la página y haz clic en Abrir.
Haz clic en Crear activador.
Introduce los siguientes ajustes del activador:
- Nombre: introduce un nombre para el activador.
Región: selecciona la región del activador.
- Si el archivo de configuración de compilación asociado al activador especifica un grupo privado, Cloud Build usará el grupo privado para ejecutar la compilación. En este caso, la región que especifiques en el activador debe coincidir con la región en la que hayas creado tu grupo privado.
- Si el archivo de configuración de compilación asociado al activador no especifica un grupo privado, Cloud Build usará el grupo predeterminado para ejecutar la compilación en la misma región que el activador.
Descripción (opcional): escribe una descripción del activador.
Evento: selecciona Mensaje de Pub/Sub como evento para invocar el activador.
Suscripción: selecciona el tema de Pub/Sub al que quieres suscribirte para que sea el evento de activación. En el menú desplegable, verás todos los temas que hay en tu proyecto.
- Tema de Pub/Sub: selecciona el tema
gcs
en el menú desplegable o crea el tema manualmente siguiendo las instrucciones de Configurar notificaciones de Pub/Sub para Cloud Storage.
- Tema de Pub/Sub: selecciona el tema
Fuente: selecciona la fuente que se va a compilar cuando se ejecute el activador de Pub/Sub. Puedes especificar 1.ª generación o 2.ª generación como fuente.
Repositorio: en la lista de repositorios disponibles, selecciona el que quieras.
Rama o Etiqueta: especifica una expresión regular con el valor de la rama o de la etiqueta que quieras que coincida. Para obtener información sobre la sintaxis válida de las expresiones regulares, consulta la sintaxis de RE2.
Control de comentarios: si has seleccionado Solicitud de extracción (solo aplicación de GitHub) como Evento, elige una de las siguientes opciones para controlar si el activador ejecutará automáticamente una compilación:
Obligatorio excepto para propietarios y colaboradores: cuando un propietario o colaborador del repositorio crea o actualiza una solicitud de extracción, el activador ejecuta automáticamente las compilaciones. Si un colaborador externo inicia la acción, las compilaciones solo se ejecutarán después de que un propietario o colaborador añada un comentario
/gcbrun
en la solicitud de extracción.Obligatorio: cuando cualquier colaborador cree o actualice una solicitud de extracción, las compilaciones solo se ejecutarán después de que un propietario o colaborador comente
/gcbrun
en la solicitud de extracción. Las compilaciones se ejecutan cada vez que se hace un cambio en una solicitud de extracción.No es obligatorio: cuando cualquier colaborador crea o actualiza una solicitud de extracción, los activadores ejecutan las compilaciones automáticamente.
Configuración: selecciona el archivo de configuración de compilación (ubicado en tu repositorio remoto) o crea un archivo de configuración de compilación insertado para usarlo en tu compilación.
- Tipo: selecciona el tipo de configuración que quieras usar en tu compilación.
- Archivo de configuración de Cloud Build (yaml o json): usa un archivo de configuración de compilación para tu configuración.
- Dockerfile usa un
Dockerfile
para tu configuración. - Buildpacks usa paquetes de compilación para tu configuración.
Ubicación: especifica la ubicación de la configuración.
- Repositorio: si el archivo de configuración se encuentra en tu repositorio remoto, indica la ubicación del archivo de configuración de compilación, el directorio
Dockerfile
o el directorio de paquetes de compilación. Si el tipo de configuración de compilación esDockerfile
o un paquete de compilación, tendrás que proporcionar un nombre para la imagen resultante y, opcionalmente, un tiempo de espera para la compilación. Cuando hayas proporcionado el nombre de laDockerfile
o de la imagen del buildpack, verás una vista previa del comandodocker build
opack
que ejecutará tu compilación. - Variables de entorno de buildpack (opcional): si has seleccionado
buildpacks
como tipo de configuración, haz clic en Añadir variable de entorno de paquete para especificar las variables de entorno y los valores de tu buildpack. Para obtener más información sobre las variables de entorno de los paquetes de compilación, consulte Variables de entorno. En línea: si has seleccionado Archivo de configuración de Cloud Build (yaml o json) como opción de configuración, puedes especificar la configuración de compilación en línea. Haz clic en Abrir editor para escribir el archivo de configuración de la compilación en la consolaGoogle Cloud con la sintaxis YAML o JSON. Haz clic en Hecho para guardar la configuración de compilación.
- Repositorio: si el archivo de configuración se encuentra en tu repositorio remoto, indica la ubicación del archivo de configuración de compilación, el directorio
- Tipo: selecciona el tipo de configuración que quieras usar en tu compilación.
Sustituciones (opcional): si has seleccionado el archivo de configuración de compilación como opción de configuración de compilación, puedes definir variables de sustitución específicas del activador en este campo.
En este ejemplo, queremos monitorizar el despliegue de un nuevo archivo binario cuando se suba a un contenedor. Para obtener estos datos, podemos crear variables de sustitución mediante enlaces de carga útil.
Especifique las siguientes variables y valores:
Nombre de la variable Valor de la variable _EVENT_TYPE
$(body.message.attributes.eventType)
_BUCKET_ID
$(body.message.attributes.bucketId)
_OBJECT_ID
$(body.message.attributes.objectId)
body.message
hace referencia al PubSubMessage publicado por los editores y consumido por los suscriptores. Para ver más ejemplos de la carga útil de notificaciones de Pub/Sub, consulta Ejemplos de notificaciones.Filtros (opcional): puedes crear filtros en un activador que determinen si el activador ejecutará una compilación en respuesta a la carga útil entrante especificando filtros en las variables de sustitución. La expresión de filtro debe dar como resultado
true
para que se ejecute una compilación.Recomendamos usar filtros al configurar activadores de Pub/Sub en temas con varios mensajes. Los filtros se pueden usar para controlar con precisión las compilaciones que se ejecutan en respuesta a los mensajes de Pub/Sub entrantes. Para obtener información sobre los riesgos asociados a la configuración de un activador sin filtros, consulta Riesgos asociados a un activador sin filtros.
Como queremos que el activador ejecute una compilación si el nuevo archivo binario se ha desplegado en un bucket específico, podemos usar el operador "==" para buscar coincidencias exactas. También puedes usar la palabra clave "matches" si quieres buscar coincidencias por expresión regular.
Especifique lo siguiente como filtros:
_EVENT_TYPE
==OBJECT_FINALIZE
_OBJECT_ID
partidos^<object-id>$
_BUCKET_ID
partidos^<bucket-id>$
- Haz clic en Crear para crear el activador de compilación. .
gcloud
Riesgos asociados a un activador sin filtrar
Si no has configurado filtros en tu activador de Pub/Sub, es posible que tu activador acabe invocando un número infinito de compilaciones si modifica un artefacto u objeto que publica sin querer un nuevo mensaje en el tema que está monitorizando. Por ejemplo, el activador puede invocar un número infinito de compilaciones si:
- Apunta a un tema de
gcr
. - Crea cualquier imagen o etiqueta en
gcr
. - Apunta a un tema
gcs
de un objeto específico de tu contenedor y modifica ese objeto.
Si te encuentras con un bucle infinito, puedes eliminar el activador o actualizarlo para que apunte a otro tema y, de esta forma, evitar que se te cobren cargos adicionales por cada compilación que invoques.
Siguientes pasos
- Consulta cómo iniciar compilaciones manualmente con comandos
gcloud
o la API de Cloud Build. - Consulta cómo crear y gestionar activadores.
- Consulta cómo ver los resultados de las compilaciones.
- Consulta cómo solucionar errores de compilación.