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

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. Los repositorios de Cloud Source Repositories están conectados a Cloud Build de forma predeterminada. Puedes crear activadores directamente para los repositorios en Cloud Source Repositories sin tener que conectarte de forma manual a ellos. Sigue estos pasos para conectarte a GitHub y Bitbucket:

  1. Abre la página Activadores en Google Cloud Console.

    Abrir la página Activadores

  2. Selecciona tu proyecto y haz clic en Abrir.

  3. Haz clic en Conectar repositorio.

  4. 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.

  5. Haga clic en Continue.

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

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

    En el caso de los repositorios externos, como GitHub y Bitbucket, debes tener permisos de nivel de propietario para el proyecto de Cloud con el que estás trabajando.

  8. Haz clic en Agregar 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 Google Cloud Console.

    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.

    • 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 (solo en apps de GitHub): Configura el activador para que inicie compilaciones a partir de confirmaciones de solicitud de extracción. Esta función solo está disponible si creas un activador de apps de GitHub. Si deseas obtener información sobre cómo crear un activador de app de GitHub, consulta Crea activadores de apps de GitHub.

    • Fuente: Selecciona el repositorio, y la rama o etiqueta correspondiente para buscar eventos.

      • Repositorio: En la lista de repositorios disponibles, selecciona el que deseas. Para conectar un repositorio nuevo, consulta Conéctate a los repositorios fuente.

      • Rama o Etiqueta: Especifica una expresión regular con la rama o el valor de la etiqueta que deben coincidir. Para obtener información acerca de la sintaxis de expresión regular aceptable, consulta Sintaxis RE2.

    • 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 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 de compilación: Selecciona el archivo de configuración de compilación (que se ubica en el repositorio remoto) para usarlo en tu compilación.

      • A fin de usar Dockerfile en tu configuración de compilación, deberás especificar el directorio de Dockerfile y un nombre para la imagen resultante. De manera opcional, también puedes proporcionar un tiempo de espera para la compilación. Cuando hayas proporcionado el Dockerfile y el nombre de la imagen, obtendrás una vista previa del comando docker build que ejecutará tu compilación.

      • Deberás proporcionar la ubicación del archivo de configuración de compilación si deseas usarlo en tu configuración de compilación.

    • 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.

  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 beta builds triggers create cloud-source-repositories \
    --repo=[REPO_NAME] \
    --branch-pattern=".*" \
    --build-config=[BUILD_CONFIG_FILE] \

En el ejemplo anterior, se ilustra lo siguiente:

  • --repo es el nombre del repositorio.
  • --branch-pattern es el tipo de activador especificado como string. En el ejemplo anterior, especificamos ".*",, que indica que una compilación se activará cuando los cambios se envíen a cualquier rama del repositorio. También puedes usar --tag-pattern para indicar que las compilaciones solo se activarán cuando se envíen a etiquetas específicas.
  • --build-config es la ruta de acceso al archivo de configuración de compilació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 beta builds triggers create github \
    --repo-name=[REPO_NAME] \
    --repo-owner=[REPO_OWNER] \
    --branch-pattern=".*" \
    --build-config=[BUILD_CONFIG_FILE] \

En el ejemplo anterior, se ilustra lo siguiente:

  • --repo-name es el nombre del repositorio.
  • --repo-owner es el nombre del propietario del repositorio.
  • --branch-pattern es el tipo de activador especificado como string. En el ejemplo anterior, especificamos ".*",, que indica que una compilación se activará cuando los cambios se envíen a cualquier rama del repositorio. También puedes usar --tag-pattern para indicar que las compilaciones solo se activarán cuando se envíen a etiquetas específicas o --pull-request-pattern a fin de indicar que la rama de git base debe coincidir con todos los eventos de solicitud de extracción.
  • --build-config es la ruta de acceso al archivo de configuración de compilación.

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 Google Cloud Console.

    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.

Si compilas mediante los activadores de apps de GitHub, Cloud Build recupera tu fuente de un archivo de Cloud Storage. Por lo tanto, primero debes clonar el repositorio de Git antes de recuperar:

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

En el ejemplo anterior, [REPOSITORY_URL] es la URL del repositorio que se va a clonar.

Inhabilita un activador de compilación

Console

  1. Abre la página Activadores en Google Cloud Console.

    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. En el campo Estado, selecciona Inhabilitado.

gcloud

Para inhabilitar un activador, sigue estos pasos:

  1. Exporta el activador que deseas inhabilitar:

     gcloud beta builds triggers export [NAME] --destination=[PATH]
    

    Aquí:

    • [NAME] es el nombre del activador.
    • [PATH] es la ruta de acceso del archivo en el 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 tu 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 beta builds triggers import --source=[PATH]
    

    Aquí:

    • [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 Google Cloud Console.

    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 beta builds triggers delete [NAME]

En el ejemplo anterior, se ilustra lo siguiente:

  • [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

Los activadores de compilación usan la cuenta de Cloud Build para ejecutar compilaciones, lo que podría proporcionar permisos de tiempo de compilación a los usuarios que usan activadores a fin de ejecutar una compilación. Ten en cuenta las siguientes implicaciones de seguridad cuando uses los 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 en el código de la solicitud de extracción. Si deseas obtener información sobre cómo inhabilitar este comportamiento para los activadores de solicitudes de extracción de GitHub, consulta Crea activadores de apps de GitHub.

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