Crea activadores de Pub/Sub

Los activadores de Pub/Sub de Cloud Build te permiten ejecutar compilaciones en respuesta a los eventos de Google Cloud publicados en Pub/Sub. Puedes usar información de un evento de Pub/Sub para parametrizar tu compilación y decidir si una compilación debe ejecutarse en respuesta al evento. Los activadores de Pub/Sub se pueden configurar para escuchar cualquier tema de Pub/Sub.

En esta página, se explica cómo puedes crear un activador de Pub/Sub para compilar en respuesta a eventos en Artifact Registry, Container Registry y Cloud Storage.

Antes de comenzar

  • Habilita la API de Cloud Build.

    Habilita la 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 de gcloud en esta página, instala la CLI de Google Cloud.

Crea un activador de compilación que responda a los eventos de Artifact Registry

Puedes crear un activador de Pub/Sub que responda a eventos de Artifact Registry, como cuando se envían, etiquetan o borran imágenes. En esta sección, se explica cómo puedes crear un activador de Pub/Sub que invoque una compilación cuando se envía una etiqueta nueva a una imagen existente. Si no estás familiarizado con Artifact Registry, consulta la descripción general de Artifact Registry.

Console

Para crear un activador que escuche una etiqueta nueva y la envíe a una imagen existente en Artifact Registry mediante Google Cloud Console, sigue estos pasos:

  1. Abrir la página Activadores:

    Abrir la página Activadores

  2. Selecciona el proyecto en la parte superior de la página y haz clic en Abrir.

  3. Haz clic en Crear activador.

  4. Ingresa las siguientes opciones de configuración del activador:

    • Nombre: Ingresa un nombre para el activador.
    • Región: Selecciona la región para el activador. Nota: Si seleccionas global como región, se utilizan los grupos predeterminados para ejecutar tu compilación. De lo contrario, se usará un grupo privado en la región del activador para ejecutar la compilación.
    • Descripción (opcional): Ingresa una descripción para el activador.
    • Evento: Selecciona Mensaje de Pub/Sub como el evento para invocar el activador.
    • Suscripción: Selecciona el tema de Pub/Sub al que te quieres suscribir como evento activador. Verás todos los temas existentes en tu proyecto en el menú desplegable.

    • Fuente: Selecciona el repositorio que se compilará cuando se ejecute el activador.

    • Revisión: Selecciona la rama o etiqueta que se compilará cuando se ejecute el activador manual.

      • Rama: Ingresa el nombre de la rama a fin de invocar tu compilación.
      • Etiqueta: ingresa el nombre de la etiqueta para invocar tu compilación.
    • 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 intercalado para usarlo en tu compilación.

      • Tipo: Selecciona el tipo de configuración que usarás para la compilación.
        • Archivo de configuración de Cloud Build (YAML o JSON): Usa un archivo de configuración de compilación para la configuración.
        • Dockerfile: Usa Dockerfile para la configuración.
        • Paquetes de compilación: Usa paquetes de compilación para tu configuración.
      • Ubicación: Especifica la ubicación de tu configuración.

        • Repositorio: Si tu archivo de configuración se encuentra en tu repositorio remoto, proporciona la ubicación de tu archivo de configuración de compilación, el directorio Dockerfile o el directorio del paquete de compilación. Si el tipo de configuración de compilación es Dockerfile o un paquete de compilación, deberás proporcionar un nombre para la imagen resultante y, de forma opcional, un tiempo de espera para tu compilación. Cuando proporciones el Dockerfile o el nombre de la imagen del paquete de compilación, verás una vista previa del comando docker build o pack que ejecutará tu compilación.
        • Variables de entorno de paquete de compilación (opcional): Si seleccionaste buildpacks como el tipo de configuración, haz clic en Agregar variable de entorno del paquete para especificar las variables de entorno y los valores del paquete de compilación. Para obtener más información sobre las variables de entorno del paquete de compilación, consulta Variables de entorno.
        • En línea: Si seleccionaste Archivo de configuración de Cloud Build (YAML o JSON) como tu opción de configuración, puedes especificar tu configuración de la compilación de forma intercalada. Haz clic en Abrir editor para escribir tu archivo de configuración de compilación en Google Cloud Console con sintaxis YAML o JSON. Haz clic en Listo para guardar la configuración de tu compilación.

    • Sustituciones Si seleccionaste el archivo de configuración de compilación como tu opción de configuración de compilación, puedes definir Variables de sustitución de un activador específico mediante este campo.

      En el siguiente ejemplo, queremos obtener el nombre de la etiqueta de la imagen de la carga útil y la acción asociada con el evento gcr. Para hacerlo, crea variables de sustitución con vinculaciones de carga útil.

      Especifica las siguientes variables y valores a continuación:

      Nombre de la variable Valor de la variable
      _IMAGE_TAG $(body.message.data.tag)
      _ACTION $(body.message.data.action)

      body.message hace referencia a PubSubMessage que publican los publicadores y que consumen los suscriptores. Para ver más ejemplos de la carga útil de notificaciones de Pub/Sub, consulta los ejemplos de notificaciones.

    • Filtros: Puedes crear filtros dentro de un activador que determinen si tu activador ejecutará o no una compilación en respuesta a la carga útil entrante si especificas filtros en las variables de sustitución (opcional). La expresión de filtro debe evaluarse como true para que se ejecute una compilación.

      Recomendamos usar el filtrado cuando configures 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 entrantes de Pub/Sub. Para obtener información sobre los riesgos asociados con la configuración de un activador sin filtros, consulta Riesgos asociados con un activador sin filtrar.

      En el siguiente ejemplo, queremos que el activador ejecute una compilación si se envía una etiqueta nueva a una imagen existente. Usamos operadores de condición de filtro a fin de verificar si la variable _IMAGE_TAG coincide con un nombre de etiqueta existente y si la variable _ACTION coincide con INSERT para buscar datos agregados recientemente.

      Especifica los siguientes elementos como filtros:

      • _IMAGE_TAG != ""
      • _ACTION == INSERT

      Los filtros de sintaxis en activadores de Pub/Sub usan Common Expression Language (CEL) para la evaluación de expresiones. Para obtener más información sobre CEL, consulta el repositorio de cel-spec. Si deseas ver más ejemplos de sintaxis de filtro que puedes aplicar a tus activadores de Pub/Sub, consulta Usa CEL para filtrar eventos de compilación.

  1. Haz clic en Crear para crear el activador.
  2. .

gcloud

Para crear un activador que escuche una etiqueta nueva y la envíe a una imagen existente en Artifact Registry mediante los comandos de gcloud, haz lo siguiente:

  1. Abre una ventana de terminal.
  2. Ejecuta el comando gcloud alpha para crear un activador de compilación en tu proyecto. En el siguiente ejemplo, el activador se configuró para responder a compilaciones con una coincidencia de etiquetas prod y una coincidencia de acción INSERT basada en la carga útil especificada según lo definido por la variable de sustitución, _IMAGE_TAG.

     gcloud alpha builds triggers create pubsub \
       --name=TRIGGER_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)'
       --filter='_IMAGE_TAG == "" && _ACTION == "INSERT"'
       --repo=REPO_NAME
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

    Donde:

    • TRIGGER_NAME es el nombre del activador.
    • PROJECT_ID es el ID de tu proyecto de Cloud.
    • TOPIC_NAME es el nombre del tema de Pub/Sub al que te suscribiste.
    • BUILD_CONFIG es la ruta de acceso al archivo de configuración de compilación.
    • INLINE_BUILD_CONFIG es la ruta de acceso al archivo de configuración de compilación intercalado.
    • REPO_NAME es el nombre del repositorio de código fuente en el que se invoca la compilación.
    • TAG_NAME es el nombre de tu etiqueta si deseas configurar tu activador para compilar en una etiqueta.
    • BRANCH_NAME es el nombre de la rama si deseas configurar el activador para que se compile en una rama.

Crea un activador de compilación que responda a los eventos de Container Registry

Puedes crear un activador de Pub/Sub que responda a los eventos de Container Registry, como cuando se envían, etiquetan o borran imágenes. En esta sección, se explica cómo puedes crear un activador de Pub/Sub que invoque una compilación cuando una imagen coincida con una etiqueta configurada por un filtro personalizado. Si no estás familiarizado con Container Registry, consulta la Guía de inicio rápido para Container Registry a fin de obtener información para enviar y extraer imágenes con etiquetas.

Console

Para crear un activador que escuche las solicitudes de envío de imagen en Container Registry y las coincidencias basadas en un nombre de etiqueta mediante Google Cloud Console, haz lo siguiente:

  1. Abrir la página Activadores:

    Abrir la página Activadores

  2. Selecciona el proyecto en la parte superior de la página y haz clic en Abrir.

  3. Haz clic en Crear activador.

  4. Ingresa las siguientes opciones de configuración del activador:

    • Nombre: Ingresa un nombre para el activador.
    • Región: Selecciona la región para el activador. Nota: Si seleccionas global como región, se utilizan los grupos predeterminados para ejecutar tu compilación. De lo contrario, se usará un grupo privado en la región del activador para ejecutar la compilación.
    • Descripción (opcional): Ingresa una descripción para el activador.
    • Evento: Selecciona Mensaje de Pub/Sub como el evento para invocar el activador.
    • Suscripción: Selecciona el tema de Pub/Sub al que te quieres suscribir como evento activador. Verás todos los temas existentes en tu proyecto en el menú desplegable.

    • Fuente: Selecciona el repositorio que se compilará cuando se ejecute el activador.

    • Revisión: Selecciona la rama o etiqueta que se compilará cuando se ejecute el activador manual.

      • Rama: Ingresa el nombre de la rama a fin de invocar tu compilación.
      • Etiqueta: ingresa el nombre de la etiqueta para invocar tu compilación.
    • 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 intercalado para usarlo en tu compilación.

      • Tipo: Selecciona el tipo de configuración que usarás para la compilación.
        • Archivo de configuración de Cloud Build (YAML o JSON): Usa un archivo de configuración de compilación para la configuración.
        • Dockerfile: Usa Dockerfile para la configuración.
        • Paquetes de compilación: Usa paquetes de compilación para tu configuración.
      • Ubicación: Especifica la ubicación de tu configuración.

        • Repositorio: Si tu archivo de configuración se encuentra en tu repositorio remoto, proporciona la ubicación de tu archivo de configuración de compilación, el directorio Dockerfile o el directorio del paquete de compilación. Si el tipo de configuración de compilación es Dockerfile o un paquete de compilación, deberás proporcionar un nombre para la imagen resultante y, de forma opcional, un tiempo de espera para tu compilación. Cuando proporciones el Dockerfile o el nombre de la imagen del paquete de compilación, verás una vista previa del comando docker build o pack que ejecutará tu compilación.
        • Variables de entorno de paquete de compilación (opcional): Si seleccionaste buildpacks como el tipo de configuración, haz clic en Agregar variable de entorno del paquete para especificar las variables de entorno y los valores del paquete de compilación. Para obtener más información sobre las variables de entorno del paquete de compilación, consulta Variables de entorno.
        • En línea: Si seleccionaste Archivo de configuración de Cloud Build (YAML o JSON) como tu opción de configuración, puedes especificar tu configuración de la compilación de forma intercalada. Haz clic en Abrir editor para escribir tu archivo de configuración de compilación en Google Cloud Console con sintaxis YAML o JSON. Haz clic en Listo para guardar la configuración de tu compilación.

    • Sustituciones Si seleccionaste el archivo de configuración de compilación como tu opción de configuración de compilación, puedes definir Variables de sustitución de un activador específico mediante este campo.

      En el siguiente ejemplo, queremos obtener el nombre de la etiqueta de la imagen de la carga útil y la acción asociada con el evento gcr. Para hacerlo, crea variables de sustitución con vinculaciones de carga útil.

      Especifica las siguientes variables y valores a continuación:

      Nombre de la variable Valor de la variable
      _IMAGE_TAG $(body.message.data.tag)
      _ACTION $(body.message.data.action)

      body.message hace referencia a PubSubMessage que publican los publicadores y que consumen los suscriptores. Para ver más ejemplos de la carga útil de notificaciones de Pub/Sub, consulta los ejemplos de notificaciones.

    • Filtros: Puedes crear filtros dentro de un activador que determinen si tu activador ejecutará o no una compilación en respuesta a la carga útil entrante si especificas filtros en las variables de sustitución (opcional). La expresión de filtro debe evaluarse como true para que se ejecute una compilación.

      Recomendamos usar el filtrado cuando configures 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 entrantes de Pub/Sub. Para obtener información sobre los riesgos asociados con la configuración de un activador sin filtros, consulta Riesgos asociados con un activador sin filtrar.

      En el siguiente ejemplo, queremos que el activador ejecute una compilación si el nombre de la variable de etiqueta _IMAGE_TAG coincide con un nombre de etiqueta específico, como prod. Puedes especificar tu operador de condición de filtro como "==" para una coincidencia exacta. También puedes verificar la acción asociada con tu evento gcr. Por ejemplo, es posible que desees especificar _ACTION es INSERT para buscar datos recién agregados.

      Especifica los siguientes elementos como filtros:

      • _IMAGE_TAG == prod
      • _ACTION == INSERT

      Los filtros de sintaxis en activadores de Pub/Sub usan Common Expression Language (CEL) para la evaluación de expresiones. Para obtener más información sobre CEL, consulta el repositorio de cel-spec. Si deseas ver más ejemplos de sintaxis para filtrar que puedes aplicar a tus activadores de Pub/Sub, consulta Filtra compilaciones.

  1. Haz clic en Crear para crear el activador.
  2. .

gcloud

Para crear un activador que escuche una solicitud de imagen en Container Registry y la haga coincidir con un nombre de etiqueta mediante comandos gcloud, haz lo siguiente:

  1. Abre una ventana de terminal.
  2. Ejecuta el comando gcloud alpha para crear un activador de compilación en tu proyecto. En el siguiente ejemplo, el activador se configuró para responder a compilaciones con una coincidencia de etiquetas prod y una coincidencia de acción INSERT basada en la carga útil especificada según lo definido por la variable de sustitución, _IMAGE_TAG.

     gcloud alpha builds triggers create pubsub \
       --name=TRIGGER_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)'
       --filter='_IMAGE_TAG == "prod" && _ACTION == "INSERT"'
       --repo=REPO_NAME
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

    Donde:

    • TRIGGER_NAME es el nombre del activador.
    • PROJECT_ID es el ID de tu proyecto de Cloud.
    • TOPIC_NAME es el nombre del tema de Pub/Sub al que te suscribiste.
    • BUILD_CONFIG es la ruta de acceso al archivo de configuración de compilación.
    • INLINE_BUILD_CONFIG es la ruta de acceso al archivo de configuración de compilación intercalado.
    • REPO_NAME es el nombre del repositorio de código fuente en el que se invoca la compilación.
    • TAG_NAME es el nombre de tu etiqueta si deseas configurar tu activador para compilar en una etiqueta.
    • BRANCH_NAME es el nombre de la rama si deseas configurar el activador para que se compile en una rama.

Crea un activador de compilación que responda a los eventos de Cloud Storage

Puedes crear un activador de Pub/Sub que responda a eventos de Cloud Storage, como cuando se envía un objeto binario nuevo a un bucket de almacenamiento existente. En esta sección, se explica cómo puedes crear un activador de Pub/Sub que responda con una compilación cuando se implemente un objeto binario nuevo en un bucket subido. Si no estás familiarizado con Cloud Storage, consulta la Guía de inicio rápido.

Console

Para crear un activador que escuche los eventos de Cloud Storage mediante Google Cloud Console, sigue estos pasos:

  1. Abrir la página Activadores:

    Abrir la página Activadores

  2. Selecciona el proyecto en la parte superior de la página y haz clic en Abrir.

  3. Haz clic en Crear activador.

  4. Ingresa las siguientes opciones de configuración del activador:

    • Nombre: Ingresa un nombre para el activador.
    • Región: Selecciona la región para el activador. Nota: Si seleccionas global como región, se utilizan los grupos predeterminados para ejecutar tu compilación. De lo contrario, se usará un grupo privado en la región del activador para ejecutar la compilación.
    • Descripción (opcional): Ingresa una descripción para el activador.
    • Evento: Selecciona Mensaje de Pub/Sub como el evento para invocar el activador.
    • Suscripción: Selecciona el tema de Pub/Sub al que te quieres suscribir como evento activador. Verás todos los temas existentes en tu proyecto en el menú desplegable.

    • Fuente: Selecciona el repositorio que se compilará cuando se ejecute el activador.

    • Revisión: Selecciona la rama o etiqueta que se compilará cuando se ejecute el activador manual.

      • Rama: Ingresa el nombre de la rama a fin de invocar tu compilación.
      • Etiqueta: ingresa el nombre de la etiqueta para invocar tu compilación.
    • 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 intercalado para usarlo en tu compilación.

      • Tipo: Selecciona el tipo de configuración que usarás para la compilación.
        • Archivo de configuración de Cloud Build (YAML o JSON): Usa un archivo de configuración de compilación para la configuración.
        • Dockerfile: Usa Dockerfile para la configuración.
        • Paquetes de compilación: Usa paquetes de compilación para tu configuración.
      • Ubicación: Especifica la ubicación de tu configuración.

        • Repositorio: Si tu archivo de configuración se encuentra en tu repositorio remoto, proporciona la ubicación de tu archivo de configuración de compilación, el directorio Dockerfile o el directorio del paquete de compilación. Si el tipo de configuración de compilación es Dockerfile o un paquete de compilación, deberás proporcionar un nombre para la imagen resultante y, de forma opcional, un tiempo de espera para tu compilación. Cuando proporciones el Dockerfile o el nombre de la imagen del paquete de compilación, verás una vista previa del comando docker build o pack que ejecutará tu compilación.
        • Variables de entorno de paquete de compilación (opcional): Si seleccionaste buildpacks como el tipo de configuración, haz clic en Agregar variable de entorno del paquete para especificar las variables de entorno y los valores del paquete de compilación. Para obtener más información sobre las variables de entorno del paquete de compilación, consulta Variables de entorno.
        • En línea: Si seleccionaste Archivo de configuración de Cloud Build (YAML o JSON) como tu opción de configuración, puedes especificar tu configuración de la compilación de forma intercalada. Haz clic en Abrir editor para escribir tu archivo de configuración de compilación en Google Cloud Console con sintaxis YAML o JSON. Haz clic en Listo para guardar la configuración de tu compilación.

    • Sustituciones Si seleccionaste el archivo de configuración de compilación como tu opción de configuración de compilación, puedes definir Variables de sustitución de un activador específico mediante este campo.

      En este ejemplo, queremos observar la implementación de un objeto binario nuevo cuando se sube a un bucket. Para obtener estos datos, podemos crear variables de sustitución con vinculaciones de carga útil.

      Especifica las siguientes variables y valores a continuación:

      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 a PubSubMessage que publican los publicadores y que consumen los suscriptores. Para ver más ejemplos de la carga útil de notificaciones de Pub/Sub, consulta los ejemplos de notificaciones.

    • Filtros: Puedes crear filtros dentro de un activador que determinen si tu activador ejecutará o no una compilación en respuesta a la carga útil entrante si especificas filtros en las variables de sustitución (opcional). La expresión de filtro debe evaluarse como true para que se ejecute una compilación.

      Recomendamos usar el filtrado cuando configures 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 entrantes de Pub/Sub. Para obtener información sobre los riesgos asociados con la configuración de un activador sin filtros, consulta Riesgos asociados con un activador sin filtrar.

      Si queremos que el activador ejecute una compilación si el objeto binario nuevo se implementó en un bucket específico, podemos usar el operador “==” para buscar coincidencias exactas. También puedes usar la palabra clave “coincidencias” si deseas hacer coincidir por expresión regular.

      Especifica los siguientes elementos como filtros:

      • _EVENT_TYPE == OBJECT_FINALIZE
      • _OBJECT_ID coincide con ^<object-id>$
      • _BUCKET_ID coincide con ^<bucket-id>$
  1. Haz clic en Crear para crear el activador.
  2. .

gcloud

Para crear un activador de compilación que escuche eventos de compilación con un tipo de evento específico en Cloud Storage, haz lo siguiente:

  1. Abre una ventana de terminal.
  2. Ejecuta el comando gcloud alpha para crear un activador de compilación en tu proyecto. En el siguiente ejemplo, el activador está configurado para responder a compilaciones con un evento de Cloud Storage asociado con un objeto binario nuevo enviado a un bucket de almacenamiento existente:

     gcloud alpha builds triggers create pubsub \
       --name=TRIGGER_NAME \
       --topic=projects/PROJECT_ID/topics/TOPIC_NAME \
       --build-config=BUILD_CONFIG \ # or --inline-config=INLINE_BUILD_CONFIG
       --substitutions=\
         _EVENT_TYPE='$(body.message.attributes.eventType)'
         _BUCKET_ID='$(body.message.attributes.bucketId)'
         _OBJECT_ID='$(body.message.attributes.objectId)'
       --filter='_EVENT_TYPE == "OBJECT_FINALIZE" && _OBJECT_ID.matches("<object-id>") && _BUCKET_ID.matches("<bucket-id>")'
       --repo=REPO_NAME
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

    Donde:

    • TRIGGER_NAME es el nombre del activador.
    • PROJECT_ID es el ID de tu proyecto de Cloud.
    • TOPIC_NAME es el nombre del tema de Pub/Sub al que te suscribiste.
    • BUILD_CONFIG es la ruta de acceso al archivo de configuración de compilación.
    • INLINE_BUILD_CONFIG es la ruta de acceso al archivo de configuración de compilación intercalado.
    • REPO_NAME es el nombre del repositorio de código fuente en el que se invoca la compilación.
    • TAG_NAME es el nombre de tu etiqueta si deseas configurar tu activador para compilar en una etiqueta.
    • BRANCH_NAME es el nombre de la rama si deseas configurar el activador para que se compile en una rama.

Riesgos asociados con un activador sin filtrar

Si no configuraste filtros en el activador de Pub/Sub, el activador podría invocar una cantidad infinita de compilaciones si modifica un objeto o artefacto que publica un mensaje de manera involuntaria en el tema un tema que escucha. Por ejemplo, tu activador puede invocar una cantidad infinita de compilaciones si tu activador:

  • Apunta a un tema gcr.
  • Crea cualquier imagen o etiqueta en gcr.
  • Apunta a un tema gcs para un objeto específico en tu bucket y lo modifica.

Si encuentras un bucle infinito, puedes borrar tu activador o actualizarlo para que apunte a un tema separado a fin de evitar incurrir en cargos adicionales por cada compilación que invoques.

Usa CEL para filtrar eventos de compilación

Cloud Build usa CEL con la variable, build, en los campos enumerados en el recurso Build para acceder a los campos asociados con el evento de compilación, como el ID del activador, la lista de imágenes o los valores de sustitución. Puedes usar la string filter para filtrar los eventos de compilación en tu archivo de configuración de compilación con cualquier campo enumerado en el recurso compilación. Para encontrar la sintaxis exacta asociada con tu campo, consulta el archivo cloudbuild.proto.

Filtrado por ID de activador

Para filtrar por ID de activador, especifica ese valor en el campo filter mediante build.build_trigger_id, en el que trigger-id es tu ID de activador como una string:

filter: build.build_trigger_id == trigger-id

Cómo filtrar por estado

Para filtrar por estado, especifica el estado de compilación que deseas filtrar en el campo filter mediante build.status.

En el siguiente ejemplo, se muestra cómo filtrar eventos de compilación con un estado SUCCESS mediante el campo filter:

filter: build.status == Build.Status.SUCCESS

También puedes filtrar compilaciones con diferentes estados. En el siguiente ejemplo, se muestra cómo filtrar eventos de compilación que tengan un estado SUCCESS, FAILURE o TIMEOUT mediante el campo filter:

filter: build.status in [Build.Status.SUCCESS, Build.Status.FAILURE, Build.Status.TIMEOUT]

Para ver los valores de estado adicionales por los que puedes filtrar, consulta Estado en la referencia del recurso Compilar.

Filtrado por etiqueta

Para filtrar por etiqueta, especifica el valor de tu etiqueta en el campo filter con build.tags, en el que tag-name es el nombre de tu etiqueta:

filter: tag-name in build.tags

Puedes filtrar según la cantidad de etiquetas especificadas en tu evento de compilación mediante size. En el siguiente ejemplo, el campo filter filtra los eventos de compilación que tienen exactamente dos etiquetas especificadas con una etiqueta especificada como v1:

filter: size(build.tags) == 2 && "v1" in build.tags

Filtrado por imágenes

Para filtrar por imágenes, especifica el valor de la imagen en el campo filter mediante build.images, en el que image-name es el nombre completo de tu imagen, como se muestra en Container Registry, como gcr.io/example/image-one:

filter: image-name in build.images

En el siguiente ejemplo, filter filtra en los eventos de compilación en los que se especificaron gcr.io/example/image-one o gcr.io/example/image-two como nombres de imagen:

filter: "gcr.io/example/image-one" in build.images || "gcr.io/example/image-two" in build.images

Filtrado por tiempo

Puedes filtrar eventos de compilación en función de la hora de creación, de inicio o de finalización de la compilación si especificas una de las siguientes opciones en el campo filter: build.create_time, build.start_time o build.finish_time.

En el siguiente ejemplo, el campo filter usa timestamp con el fin de filtrar los eventos de compilación con un tiempo de solicitud para crear la compilación el 20 de julio de 2020 a las 6:00 a.m.

filter: build.create_time == timestamp("2020-07-20:T06:00:00Z")

También puedes filtrar eventos de compilación por comparaciones de tiempo. En el siguiente ejemplo, el campo filter usa timestamp para filtrar los eventos de compilación con una hora de inicio entre el 20 de julio de 2020 a las 6:00 a.m. y el 30 de julio de 2020 a las 6:00 a.m.

filter: timestamp("2020-07-20:T06:00:00Z") >= build.start_time && build.start_time <= timestamp("2020-07-30:T06:00:00Z")

Si deseas obtener más información sobre cómo se expresan las zonas horarias en CEL, consulta la definición del lenguaje para zonas horarias.

Para filtrar por duración de una compilación, puedes usar duration a fin de comparar marcas de tiempo. En el siguiente ejemplo, el campo filter usa duration para filtrar eventos de compilación con compilaciones que se ejecutan durante al menos cinco minutos:

filter: build.finish_time - build.start_time >= duration("5m")

Filtrado por sustituciones

Para filtrar por sustitución, especifica la variable de sustitución en el campo filter mediante build.substitutions. En el siguiente ejemplo, el campo filter enumera las compilaciones que contienen la variable de reemplazo substitution-variable y verifica si substitution-variable coincide con el substitution-value especificado:

filter: build.substitutions[substitution-variable] == substitution-value

Donde:

  • substitution-variable es el nombre de tu variable de sustitución.
  • substitution-value es el nombre de tu valor de reemplazo.

También puedes filtrar por valores de variable de sustitución predeterminados. En el siguiente ejemplo, el campo filter enumera las compilaciones que tienen el nombre de la rama master y las compilaciones que tienen el nombre del repositorio github.com/user/my-example-repo. Las variables de reemplazo predeterminadas BRANCH_NAME y REPO_NAME se pasan como claves a build.substitutions:

filter: build.substitutions["BRANCH_NAME"] == "master" && build.substitutions["REPO_NAME"] == "github.com/user/my-example-repo"

Si deseas filtrar en strings mediante expresiones regulares, puedes usar la función integrada matches. En el siguiente ejemplo, el campo filter filtra las compilaciones con un estado de FAILURE o TIMEOUT, y que también tiene una variable de sustitución de compilación TAG_NAME con un valor que coincide con la expresión regular. v{DIGIT}.{DIGIT}.{3 DIGITS}).

filter: build.status in [Build.Status.FAILURE, Build.Status.TIMEOUT] && build.substitutions["TAG_NAME"].matches("^v\\d{1}\\.\\d{1}\\.\\d{3}$")`

Para ver una lista de valores de sustituciones predeterminadas, consulta Usa sustituciones predeterminadas.

¿Qué sigue?