Crea y administra activadores de compilación

Un activador de Cloud Build inicia una compilación de forma automática cada vez que realizas algún cambio en el código fuente. Puedes configurar el activador para que compile el código a partir de cualquier cambio que se realice en el repositorio de código fuente o solo a partir de los cambios que coincidan con ciertos criterios.

En esta página, se explica cómo conectarse a los repositorios de código fuente, como GitHub y Bitbucket, y cómo crear activadores de compilaciones para compilar el código en los repositorios.

Antes de comenzar

  • Habilita la API de Cloud Build.

    Habilita la API

  • Debes tener el rol Editor de Cloud Build (roles/cloudbuild.builds.editor) en tu proyecto para crear activadores.
  • Necesitas código fuente en Cloud Source Repositories, GitHub o Bitbucket.
  • Necesitas un Dockerfile o un archivo de configuración de Cloud Build.

Conéctate a repositorios de código fuente

Primero debes conectar Cloud Build a tu repositorio de código fuente para poder compilar el código en ese repositorio. Tus repositorios de Cloud Source Repositories están conectados a Cloud Build de forma predeterminada. Puedes crear activadores directamente para tus repositorios en Cloud Source Repositories sin tener que conectarte de forma manual a ellos.

Si conectas un repositorio externo, como uno alojado en GitHub o Bitbucket, necesitarás permisos de nivel de administrador en el repositorio para conectar inicialmente tu repositorio a Cloud Build. Los permisos de administrador no son necesarios para crear activadores en un repositorio que ya está conectado a Cloud Build.

Sigue estos pasos para conectarte a GitHub o Bitbucket:

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores

  2. Selecciona tu proyecto y haz clic en Open.

  3. En el menú desplegable Región, selecciona la región en la que deseas crear el activador.

  4. Haz clic en Conectar repositorio.

  5. Selecciona el repositorio en el que almacenaste el código fuente.

    Si seleccionas GitHub (duplicado) o Bitbucket (duplicado) como tu repositorio de código fuente, Cloud Build duplica el repositorio en Cloud Source Repositories y usa el repositorio duplicado para todas sus operaciones.

  6. Haga clic en Continue.

  7. Autentica el repositorio de código fuente con tu nombre de usuario y contraseña.

  8. En la lista de repositorios disponibles, selecciona el repositorio que deseas y, luego, haz clic en Conectar.

    En el caso de los repositorios externos, como GitHub y Bitbucket, debes tener permisos de nivel de propietario para el proyecto de Google Cloud con el que trabajas.

  9. Haz clic en Crear un activador para proceder a la creación de un activador de compilación que automatice las compilaciones del código fuente en el repositorio o haz clic en Listo.

Crea un activador de compilación

Console

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores

  2. Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.

  3. Haz clic en Abrir.

  4. Haz clic en Crear activador.

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

    • Nombre: Ingresa un nombre para el activador.

    • Región: Selecciona la región de tu activador.

      Si el archivo de configuración de compilación asociado con tu activador especifica un grupo privado, la región que selecciones para tu activador debe coincidir con la región del grupo privado.

      Si seleccionas global como la región, Cloud Build usará la región especificada en el archivo de configuración de compilación para ejecutar la compilación. Puede ser la región del grupo privado (si especificas un grupo privado en el archivo de configuración de compilación) o el grupo predeterminado global si no especificas un grupo privado.

    • Descripción (opcional): Ingresa una descripción para el activador.

    • Evento: Selecciona el evento de repositorio que invoca al activador.

      • Enviar a una rama: Configura el activador para que inicie compilaciones a partir de las confirmaciones en una rama en particular.

      • Enviar etiqueta nueva: Configura el activador para que inicie compilaciones a partir de las confirmaciones que contengan una etiqueta específica.

      • Solicitud de extracción: Configura el activador para que inicie una compilación a partir de las confirmaciones de una solicitud de extracción.

    • Fuente: Selecciona 1a generación o 2a generación como fuente. Solo puedes conectar repositorios desde GitHub y GitHub Enterprise si seleccionas 2a generación como la fuente. Para obtener más información, consulta Repositorios de Cloud Build.

      • Rama o Etiqueta: Especifica una expresión regular con la rama o el valor de la etiqueta que deben coincidir. No se pueden usar barras diagonales (/) en las etiquetas. Para obtener información acerca de la sintaxis de expresión regular aceptable, consulta la sección sobre sintaxis RE2.

        Cuando se ejecuta tu compilación, Cloud Build copia el contenido de tu repositorio en /workspace, el directorio de trabajo predeterminado para Cloud Build. Obtén más información sobre los directorios de trabajo en la página de descripción general de la configuración de compilación.

        Si quieres permitir solo compilaciones de fuentes específicas, configura una política de la organización para las integraciones permitidas (constraints/cloudbuild.allowedIntegrations) de modo que rechacen la interacción con la fuente definida en el activador. La política de la organización anula el activador y no se ejecuta tu compilación. Si deseas obtener más información, consulta Compilaciones de puerta en la política de la organización para tu proyecto.

    • Archivos incluidos (opcional): Los cambios que afecten al menos a uno de estos archivos invocarán una compilación. Puedes usar las strings glob para especificar varios archivos con caracteres comodín. Los caracteres comodín aceptables incluyen los caracteres compatibles con Go Match, ** y alternación.

    • Archivos ignorados (opcional): Los cambios que solo afectan a los archivos ignorados no invocarán una compilación. Puedes usar las strings glob para especificar varios archivos con caracteres comodín. Los caracteres comodín aceptables incluyen los caracteres compatibles con Go Match, ** y alternación.

      Si especificas un archivo en Archivos incluidos y Archivos ignorados, los cambios en ese archivo no invocarán una compilación. Supongamos que especificas **/README.md en Archivos ignorados para ignorar README.md en cualquier directorio y especificas src/* en Archivos incluidos a fin de comenzar una compilación a partir de los cambios en cualquier archivo de la carpeta src/. Ahora bien, si realizas un cambio en src/README.md, Cloud Build no iniciará una compilación. Cada vez que envías un cambio al código fuente, Cloud Build revisa los archivos que se modificaron y que están especificados como archivos incluidos y archivos ignorados a fin de determinar si se debe invocar una compilación:

      • Si envías un cambio a tu repositorio sobre una rama existente, Cloud Build observa los archivos modificados entre la confirmación recién enviada y la confirmación a la que apuntaba la rama antes.
      • Si tu repositorio es Cloud Source Repository y envías un cambio a una rama recién creada, Cloud Build trata todos los archivos del repositorio como archivos modificados.
      • Si borras una rama, Cloud Build no inicia una 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 el archivo de configuración se encuentra en el repositorio remoto, proporciona 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 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 la consola de Google Cloud con la sintaxis YAML o JSON. Haz clic en Listo para guardar la configuración de tu compilación.

    • Usar grupo privado: Este campo aparece si seleccionaste Dockerfile como la opción Configuración. Selecciona esta casilla de verificación si ejecutas la compilación en un grupo privado.

    • Grupo privado: si seleccionaste Usar grupo privado, especifica el nombre el recurso del grupo privado con el formato projects/WORKERPOOL_PROJECT_ID/locations/REGION/workerPools/WORKERPOOL_ID.

    • Variables de sustitución (opcional): Si seleccionaste el archivo de configuración de Cloud Build como la opción de configuración de compilación, puedes definir variables de sustitución específicas del activador mediante este campo. Por ejemplo, supongamos que creas varios activadores y que cada uno de ellos implementa tu app en un entorno específico. Puedes especificar que la app se implemente en un entorno del archivo de configuración de compilación y, luego, usar este campo para definir variables de sustitución que especifiquen en qué entorno debe implementarse este activador. Para obtener información sobre cómo especificar valores de sustitución en archivos de configuración de compilación, consulta Sustituye valores de variable.

    • Aprobación (opcional): Marca la casilla para solicitar aprobación antes de que se ejecute la compilación.

    • Cuenta de servicio: Selecciona la cuenta de servicio que se usará para invocar el activador. Si no seleccionas una cuenta de servicio, se usa la cuenta de servicio de Cloud Build predeterminada.

  6. Haz clic en Crear para guardar el activador de compilación.

gcloud

Si tu código fuente está en Cloud Source Repositories, usa este comando para crear un activador:

    gcloud builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

Aquí:

  • REPO_NAME es el nombre del repositorio.
  • BRANCH_PATTERN es el nombre de la rama en tu repositorio para invocar la compilación.
  • TAG_PATTERN es el nombre de la etiqueta en tu repositorio para invocar la compilación.
  • BUILD_CONFIG_FILE es la ruta de acceso al archivo de configuración de compilación.

  • SERVICE_ACCOUNT es el correo electrónico asociada a tu cuenta de servicio. Si no incluyes esta marca, se usa la cuenta de servicio predeterminada de Cloud Build.

  • [Opcional] --require-approval es la marca que se debe incluir para configurar el activador a fin de que requiera aprobación.

Si deseas obtener una lista completa de las marcas, consulta la referencia de gcloud sobre cómo crear activadores para Cloud Source Repositories.

Si tu código fuente está en GitHub, usa este comando para crear un activador:

    gcloud builds triggers create github \
    --region=REGION \
    --repo-name=REPO_NAME \
    --repo-owner=REPO_OWNER \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval
    --include-logs-with-status

Aquí:

  • REGION es la región del activador.
  • REPO_NAME es el nombre del repositorio.
  • REPO_OWNER es el nombre de usuario del propietario del repositorio.
  • BRANCH_PATTERN es el nombre de la rama en tu repositorio para invocar la compilación.
  • TAG_PATTERN es el nombre de la etiqueta en tu repositorio para invocar la compilación.
  • BUILD_CONFIG_FILE es la ruta de acceso al archivo de configuración de compilación.
  • SERVICE_ACCOUNT es el correo electrónico asociada a tu cuenta de servicio. Si no incluyes esta marca, se usa la cuenta de servicio predeterminada de Cloud Build.
  • [Opcional] --require-approval es la marca que se debe incluir para configurar el activador a fin de que requiera aprobación.
  • --include-logs-with-status es una marca que puedes especificar para mostrar registros de compilación de tus repositorios (opcional). Esta marca es compatible con compilaciones de repositorios de GitHub y GitHub Enterprise.

Si deseas obtener una lista completa de las marcas, consulta la referencia de gcloud sobre cómo crear activadores para GitHub.

Después de ejecutar el comando de gcloud para crear un activador mediante Cloud Source Repositories o GitHub, debería aparecer un resultado similar al siguiente:

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

Prueba un activador de compilación

Para probar de forma manual un activador de compilación, sigue estos pasos:

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores

  2. Encuentra tu activador en la lista y haz clic en Ejecutar activador.

Omite un activador de compilación

En algunos casos, es posible que desees realizar un cambio en el código fuente, pero sin que esto invoque una compilación. Por ejemplo, es posible que no quieras que se invoque una compilación cuando actualizas la documentación o los archivos de configuración.

En estos casos, puedes incluir [skip ci] o [ci skip] en el mensaje de confirmación, y no se invocará una compilación.

Si deseas ejecutar una compilación a partir de esa confirmación más tarde, usa el botón Ejecutar activador en la página Activadores.

Incluye el historial del repositorio en una compilación

A fin de compilar tu fuente en un repositorio de Git, Cloud Build realiza una clonación superficial del repositorio. Esto significa que solo se extrae en el espacio de trabajo para compilar la confirmación individual que inició la compilación. Cloud Build no verifica ninguna otra rama o historia. Esto se hace a fin de aumentar la eficiencia, así las compilaciones no tienen que esperar a que se recupere el repositorio y la historia completa solo para compilar una confirmación única.

Si deseas incluir más de la historia de tu repositorio en la compilación, agrega un paso de compilación a tu archivo de configuración de compilación de modo que la clonación deje de ser superficial. Por ejemplo:

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

Para obtener más información sobre git fetch, consulta la referencia de git. Si deseas obtener instrucciones para escribir un archivo de configuración de compilación, consulta Descripción general de la configuración de compilación.

Cómo volver a enviar una compilación para su aprobación

Si se rechazó tu compilación, puedes volver a enviarla para su aprobación. Para ello, sigue estos pasos en la consola de Google Cloud:

  1. Abre la página Historial de Cloud Build en la consola de Google Cloud.

    Abrir la página Historial de Cloud Build

  2. Haz clic en el ID de la compilación que deseas volver a enviar para su aprobación.

  3. Haz clic en Volver a compilar en la parte superior de la página a fin de volver a enviar tu compilación para su aprobación.

La compilación comenzará cuando un usuario con permisos la apruebe. Para obtener más información sobre las aprobaciones de Cloud Build, consulta Compilaciones de puerta de enlace en la aprobación.

Actualiza un activador de compilación

Console

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores de compilación

  2. Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.

  3. Haz clic en Abrir.

  4. Ubica la fila con el activador que deseas actualizar.

  5. Haz clic en el menú (puntos suspensivos verticales) que se ubica en el extremo derecho de la fila.

  6. Selecciona Editar.

gcloud

Para actualizar un activador, sigue estos pasos:

  1. Exporta el activador que deseas actualizar:

     gcloud builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
    

    Aquí:

    • TRIGGER_NAME es el nombre del activador.
    • EXPORT_PATH es la ruta del archivo a la que deseas exportar el activador. Por ejemplo, puedes especificar la ruta de acceso del archivo como examples/trigger.yaml. Ten en cuenta que el nombre de archivo de tu activador debe tener la extensión .yaml.
  2. Abre el archivo que contiene el activador exportado.

    Tu archivo será similar al siguiente:

     createTime: '2022-05-26T21:56:11.830784153Z'
     filename: cloudbuild.yaml
     github:
       name: cloud-build-example
       owner: main
       push:
         branch: master
     id: 86201062-3b14-4b6a-a2fb-4ee924e8b1dd
     # remove field name and value to not show build logs
     includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS
     name: trigger-001
    
  3. Edita el archivo de forma manual para actualizar el activador.

    Para ver los campos que puedes agregar o quitar de tu activador, consulta el recurso del activador.

  4. Guarda el archivo.

  5. Importa el activador:

     gcloud builds triggers import --source=IMPORT_PATH
    

    Aquí:

    • IMPORT_PATH es la ruta de acceso del archivo del activador que deseas importar.

Se actualizó tu activador de compilación.

Inhabilita un activador de compilación

Console

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores de compilación

  2. Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.

  3. Haz clic en Abrir.

  4. Ubica la fila con el activador que deseas inhabilitar.

  5. Haz clic en el menú (puntos suspensivos verticales) que se ubica en el extremo derecho de la fila.

  6. Selecciona Inhabilitar.

gcloud

Para inhabilitar un activador, sigue estos pasos:

  1. Exporta el activador que deseas inhabilitar:

     gcloud builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
    

    Aquí:

    • TRIGGER_NAME es el nombre del activador.
    • EXPORT_PATH es la ruta del archivo a la que deseas exportar el activador. Por ejemplo, puedes especificar la ruta de acceso del archivo como examples/trigger.yaml. Ten en cuenta que el nombre de archivo de tu activador debe tener la extensión .yaml.
  2. Abre el archivo que contiene el activador exportado.

    Tu archivo será similar al siguiente:

     createTime: '2020-02-21T20:02:50.215599013Z'
     description: Push to any branch
     filename: cloudbuild.yaml
     github:
       name: example-repo-name
       owner: example-owner
       push:
         branch: .*
     id: example-id
     name: Push-to-any-branch
     tags:
     - github-default-push-trigger
    
  3. Agrega el campo disabled al final del archivo y establece el valor como True.

     disabled: True
    
  4. Guarde el archivo.

  5. Importa el activador:

     gcloud builds triggers import --source=IMPORT_PATH
    

    Aquí:

    • IMPORT_PATH es la ruta de acceso del archivo del activador que deseas importar.

Ahora, tu activador de compilación está inhabilitado.

La inhabilitación de un activador no borra el activador. Para borrar un activador, consulta Borra un activador de compilación. Para volver a habilitar un activador, cambia el estado a Habilitado.

Borra un activador de compilación

Console

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores de compilación

  2. Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.

  3. Haz clic en Abrir.

  4. Ubica la fila con el activador que deseas borrar.

  5. Haz clic en el menú (puntos suspensivos verticales) que se ubica en el extremo derecho de la fila.

  6. Selecciona Borrar.

gcloud

Para borrar un activador, ejecuta el siguiente comando:

  gcloud builds triggers delete TRIGGER_NAME

Aquí:

  • TRIGGER_NAME es el nombre del activador.

Si deseas ver una lista completa de las marcas, consulta la referencia de gcloud sobre cómo borrar activadores.

Implicaciones de seguridad de los activadores de compilación

De forma predeterminada, los activadores de compilación usan la cuenta de servicio de Cloud Build a fin de ejecutar compilaciones, que podrían proporcionar permisos de tiempo de compilación a los usuarios que usan activadores para ejecutar una compilación. Ten en cuenta las siguientes implicaciones de seguridad cuando uses activadores de compilación:

  • Un usuario sin acceso a tu proyecto de Cloud, pero con acceso de escritura al repositorio asociado con los activadores de compilación en el proyecto, tendrá permisos para cambiar el código que se compilará.
  • Si usas activadores de solicitud de extracción de GitHub, cualquier usuario con acceso de lectura al repositorio puede enviar una solicitud de extracción, que puede ejecutar una compilación que incluya cambios al código en la solicitud de extracción. Si deseas obtener información a fin de inhabilitar este comportamiento para los activadores de solicitudes de extracción de GitHub, consulta Crea activadores de GitHub.

Una buena práctica de seguridad es crear una cuenta de servicio con solo los roles necesarios para el activador. Para obtener más información, consulta Configura cuentas de servicio especificadas por el usuario. Para obtener más información sobre la cuenta de servicio de Cloud Build y sus permisos asociados, consulta Cuenta de servicio de Cloud Build.

¿Qué sigue?