Un activador de Cloud Build inicia una compilación automáticamente cada vez que modificas el código fuente. Puedes configurar el activador para que compile el código a partir de cualquier cambio en el repositorio de origen o solo a partir de los cambios que cumplan con ciertos criterios.
En esta página se explica cómo conectarse a repositorios de origen, como GitHub y Bitbucket, y cómo crear activadores de compilación para compilar el código de los repositorios.
Antes de empezar
Para obtener los permisos que necesitas para crear y gestionar activadores de compilación, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Cloud Build (roles/cloudbuild.builds.editor
) en tu proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Además, haz lo siguiente:
-
Enable the Cloud Build API.
- Asegúrate de que tienes código fuente en Cloud Source Repositories, GitHub o Bitbucket.
- Asegúrate de tener un
Dockerfile
o un archivo de configuración de Cloud Build.
Conectarse a repositorios de origen
Primero debes conectar Cloud Build a tu repositorio de origen para compilar el código de ese repositorio. Tus repositorios de Cloud Source Repositories están conectados a Cloud Build de forma predeterminada. Puedes crear directamente activadores para tus repositorios en Cloud Source Repositories sin conectarte a ellos manualmente.
Si vas a conectar un repositorio externo, como uno alojado en GitHub o Bitbucket, necesitarás permisos de nivel de administrador en el repositorio para conectarlo inicialmente a Cloud Build. No es necesario tener permisos de administrador para crear activadores en un repositorio que ya esté conectado a Cloud Build.
Sigue estos pasos para conectarte a GitHub o Bitbucket:
Abre la página Triggers (Activadores) en la consola de Google Cloud .
En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto.
Haz clic en Conectar repositorio.
En el menú desplegable Región, selecciona la región en la que quieras crear el activador.
Selecciona el repositorio en el que has almacenado el código fuente.
Si seleccionas GitHub (replicado) o Bitbucket (replicado) como repositorio fuente, Cloud Build replicará tu repositorio en Cloud Source Repositories y usará el repositorio replicado para todas sus operaciones.
Haz clic en Continuar.
Autentícate en tu repositorio de origen con tu nombre de usuario y tu contraseña.
En la lista de repositorios disponibles, selecciona uno y haz clic en Conectar.
En el caso de los repositorios externos, como GitHub y Bitbucket, debes tener permisos de propietario en el Google Cloud proyecto con el que estés trabajando.
Haz clic en Crear un activador para seguir creando un activador de compilación que automatice las compilaciones del código fuente del repositorio o haz clic en Hecho.
Crear un activador de compilación
Consola
Abre la página Triggers (Activadores) en la consola de Google Cloud .
En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto.
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 a tu activador especifica un grupo privado, la región que selecciones para el activador debe coincidir con la región del grupo privado.
Si seleccionas
global
como 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 ningún grupo privado.Descripción (opcional): escribe una descripción del activador.
Evento: selecciona el evento del repositorio para invocar el activador.
Enviar a una rama: configura el activador para iniciar una compilación en las confirmaciones de una rama concreta.
Enviar nueva etiqueta: configura el activador para que inicie una compilación en las confirmaciones que contengan una etiqueta concreta.
Solicitud de extracción: configura el activador para que inicie una compilación cuando se confirmen cambios en una solicitud de extracción.
Fuente: selecciona 1.ª generación o 2.ª generación como fuente. Solo puedes conectar repositorios de GitHub y GitHub Enterprise cuando seleccionas 2.ª generación como fuente. Para obtener más información, consulta Repositorios de Cloud Build.
- Repositorio: en la lista de repositorios disponibles, selecciona uno. Para conectar un repositorio nuevo, consulta Conectarse a repositorios de origen.
Rama o Etiqueta: especifica una expresión regular con el valor de la rama o de la etiqueta que quieras que coincida. No se pueden usar barras diagonales (
/
) en las etiquetas. Para obtener más información sobre la sintaxis válida de las expresiones regulares, consulta la sintaxis de RE2.Cuando se ejecuta la compilación, Cloud Build copia el contenido del repositorio en
/workspace
, el directorio de trabajo predeterminado de Cloud Build. Consulta más información sobre los directorios de trabajo en la página de descripción general de la configuración de compilación.Para permitir solo compilaciones de fuentes específicas, define una política de organización para las integraciones permitidas (
constraints/cloudbuild.allowedIntegrations
) que deniegue la interacción con la fuente definida en tu activador. La política de la organización anula el activador y la compilación no se ejecuta. Para obtener más información, consulta Puerta de compilación en la política de la organización de tu proyecto.
Archivos incluidos (opcional): los cambios que afecten al menos a uno de estos archivos activarán una compilación. Puedes usar cadenas glob para especificar varios archivos con caracteres comodín. Los caracteres comodín aceptados son los que admite Go Match,
**
y la alternancia.Archivos ignorados (opcional): los cambios que solo afecten a los archivos ignorados no activarán una compilación. Puedes usar cadenas glob para especificar varios archivos con caracteres comodín. Entre los caracteres comodín aceptados se incluyen los caracteres admitidos por Go Match,
**
y la alternancia.Si especificas un archivo en Archivos incluidos y en Archivos ignorados, los cambios en ese archivo no activarán una compilación. Supongamos que especifica
**/README.md
en Archivos ignorados para ignorarREADME.md
en cualquier directorio y especificasrc/*
en Archivos incluidos para iniciar una compilación en los cambios de cualquier archivo de la carpetasrc/
. Ahora, si haces un cambio ensrc/README.md
, Cloud Build no iniciará una compilación. Cada vez que envías un cambio a tu fuente, Cloud Build busca en los archivos modificados los archivos incluidos e ignorados para determinar si se debe invocar una compilación:- Si envías un cambio a tu repositorio en una rama ya creada, Cloud Build examina los archivos que han cambiado entre la confirmación que acabas de enviar y la confirmación a la que apuntaba la rama anteriormente.
- Si tu repositorio es Cloud Source Repositories y envías un cambio a una rama recién creada, Cloud Build tratará todos los archivos del repositorio como archivos modificados.
- Si eliminas una rama, Cloud Build no inicia una compilación.
Configuración: selecciona el archivo de configuración de compilación que se encuentra 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.
Usar grupo privado: este campo aparece si has seleccionado Dockerfile como opción de Configuración. Selecciona esta casilla si vas a ejecutar tu compilación en un grupo privado.
Grupo privado: si has seleccionado Usar grupo privado, especifica el nombre del recurso del grupo privado con el formato
projects/WORKERPOOL_PROJECT_ID/locations/REGION/workerPools/WORKERPOOL_ID
.Variables de sustitución (opcional): si has seleccionado el archivo de configuración de Cloud Build como 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 estás creando varios activadores y que cada uno de ellos implementa tu aplicación en un entorno específico. Puedes especificar que tu aplicación se implemente en un entorno de tu archivo de configuración de compilación y, a continuación, usar este campo para definir variables de sustitución que especifiquen en qué entorno se debe implementar este activador. Para obtener información sobre cómo especificar valores de sustitución en archivos de configuración de compilación, consulta Sustituir valores de variables.
Aprobación (opcional): marca la casilla para requerir aprobación antes de ejecutar la compilación.
Cuenta de servicio: selecciona la cuenta de servicio que quieras usar al invocar el activador. Solo se usará la cuenta de servicio especificada en el activador para las compilaciones ejecutadas por activadores. Si has especificado una cuenta de servicio en la configuración de tu compilación, se ignorará durante la ejecución de la compilación cuando uses activadores.
Haz clic en Crear para guardar el activador de compilación.
gcloud
Para crear un activador si tu código fuente está en Cloud Source Repositories, haz lo siguiente:
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
Donde:
- REPO_NAME es el nombre de tu repositorio.
- BRANCH_PATTERN es el nombre de la rama de tu repositorio en la que se invoca la compilación.
- TAG_PATTERN es el nombre de la etiqueta de tu repositorio para invocar la compilación.
- BUILD_CONFIG_FILE es la ruta a tu archivo de configuración de compilación.
- SERVICE_ACCOUNT es la cuenta de servicio que se debe usar para las operaciones de activadores y compilaciones.
- Opcional: Para configurar el activador de forma que requiera aprobación, define la marca
--require-approval
.
Para ver una lista completa de las marcas, consulta la referencia de gcloud
sobre cómo crear activadores para Cloud Source Repositories.
Para crear un activador si tu código fuente está en GitHub, sigue estos pasos:
gcloud builds triggers create github \
--name=TRIGGER_NAME \
--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
Donde:
- REGION es la región de tu activador.
- REPO_NAME es el nombre de tu repositorio.
- REPO_OWNER es el nombre de usuario del propietario del repositorio.
- BRANCH_PATTERN es el nombre de la rama de tu repositorio en la que se invoca la compilación.
- TAG_PATTERN es el nombre de la etiqueta de tu repositorio para invocar la compilación.
- BUILD_CONFIG_FILE es la ruta a tu archivo de configuración de compilación.
- SERVICE_ACCOUNT es la cuenta de servicio que se debe usar para las operaciones de activadores y compilaciones.
- Opcional:
--require-approval
es la marca que se debe incluir para configurar el activador de forma que requiera aprobación. - Opcional:
--include-logs-with-status
es una marca que puedes especificar para mostrar los registros de compilación de tus repositorios. Esta marca se admite en las compilaciones de repositorios de GitHub y GitHub Enterprise.
Para 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 gcloud
para crear un activador con Cloud Source Repositories o GitHub, debería ver un resultado similar al siguiente:
NAME CREATE_TIME STATUS
trigger-001 2019-10-30T20:45:03+00:00
Probar un activador de compilación
Para probar manualmente un activador de compilación, sigue estos pasos:
Abre la página Triggers (Activadores) en la consola de Google Cloud .
En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto.
Busca el activador en la lista y haz clic en Ejecutar.
Omitir un activador de compilación
En algunos casos, puede que quieras hacer un cambio en el código fuente, pero no quieras invocar una compilación. Por ejemplo, puede que no quieras invocar una compilación cuando actualices archivos de documentación o de configuración.
En estos casos, puedes incluir [skip ci]
o [ci skip]
en el mensaje de confirmación para que no se invoque ninguna compilación.
Si quieres ejecutar una compilación en esa confirmación más adelante, usa el botón Ejecutar en la página Activadores.
Incluir el historial del repositorio en una compilación
Para compilar tu código fuente en un repositorio de Git, Cloud Build realiza una clonación superficial del repositorio. Esto significa que solo se extraerá del espacio de trabajo la única confirmación que inició la compilación. Cloud Build no extrae ninguna otra rama ni historial. Esto se hace por eficiencia, de modo que las compilaciones no tengan que esperar a obtener todo el repositorio y el historial solo para compilar una única confirmación.
Si quieres incluir más historial de tu repositorio en la compilación, añade un paso de compilación en el archivo de configuración de la compilación para "desprofundizar" la clonación. 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.
Para obtener instrucciones sobre cómo escribir un archivo de configuración de compilación, consulta el artículo Descripción general de la configuración de compilación.
Volver a enviar una compilación para su aprobación
Si se ha rechazado tu compilación, puedes volver a enviarla para que se apruebe siguiendo estos pasos en la Google Cloud consola:
Abre la página Historial de compilaciones de Cloud en la Google Cloud consola.
Haga clic en el ID de compilación de la compilación que quiera volver a enviar para que se apruebe.
Haz clic en Recompilar en la parte superior de la página para volver a enviar tu compilación para que se apruebe.
La compilación se iniciará cuando un usuario con permisos la apruebe. Para obtener más información sobre las aprobaciones de Cloud Build, consulta Puerta de acceso a compilaciones mediante aprobación.
Actualizar un activador de compilación
Consola
Abre la página Triggers (Activadores) en la consola de Google Cloud .
En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto.
Busca la fila del activador que quieras actualizar.
Haz clic en el menú (elipses verticales) situado en el extremo derecho de la fila.
Selecciona Editar.
gcloud
Para actualizar un activador, sigue estos pasos:
Exporta el activador que quieras actualizar:
gcloud beta builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
Donde:
TRIGGER_NAME
es el nombre del activador.EXPORT_PATH
es la ruta a la que quieres exportar el activador. Por ejemplo, puedes especificar la rutaexamples/trigger.yaml
. Ten en cuenta que el nombre de archivo del activador debe tener la extensión YAML.
Abre el archivo que contiene el activador exportado.
El archivo tendrá un aspecto 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
Edita manualmente el archivo para actualizar el activador.
Para ver los campos que puedes añadir o quitar de tu activador, consulta el recurso de activador.
Guarda el archivo.
Importa el activador:
gcloud builds triggers import --source=IMPORT_PATH
Donde:
IMPORT_PATH
es la ruta del activador que quieres importar.
El activador de compilación se ha actualizado.
Inhabilitar un activador de compilación
Consola
Abre la página Triggers (Activadores) en la consola de Google Cloud .
En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto.
Busca la fila del activador que quieras inhabilitar.
Haz clic en el menú (elipses verticales) situado en el extremo derecho de la fila.
Selecciona Disable (Inhabilitar).
gcloud
Para inhabilitar un activador:
Exporta el activador que quieras inhabilitar:
gcloud beta builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
Donde:
TRIGGER_NAME
es el nombre del activador.EXPORT_PATH
es la ruta a la que quieres exportar el activador. Por ejemplo, puedes especificar la rutaexamples/trigger.yaml
. Ten en cuenta que el nombre de archivo del activador debe tener la extensión YAML.
Abre el archivo que contiene el activador exportado.
El archivo tendrá un aspecto 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
Añade el campo
disabled
al final del archivo y asigna el valorTrue
.disabled: True
Guarda el archivo.
Importa el activador:
gcloud builds triggers import --source=IMPORT_PATH
Donde:
IMPORT_PATH
es la ruta del activador que quieres importar.
El activador de compilación ya está inhabilitado.
Inhabilitar un activador no lo elimina. Para eliminar un activador, consulta Eliminar un activador de compilación. Para volver a habilitar un activador, cambia su estado a Habilitado.
Eliminar un activador de compilación
Consola
Abre la página Triggers (Activadores) en la consola de Google Cloud .
En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto.
Busca la fila del activador que quieras eliminar.
Haz clic en el menú (elipses verticales) situado en el extremo derecho de la fila.
Selecciona Eliminar.
gcloud
Para eliminar un activador, ejecuta el siguiente comando:
gcloud builds triggers delete TRIGGER_NAME
Donde:
TRIGGER_NAME
es el nombre del activador.
Para ver una lista completa de las marcas, consulta la referencia de gcloud
sobre cómo eliminar activadores.
Implicaciones de seguridad de los activadores de compilación
La cuenta de servicio configurada para un activador de compilación puede proporcionar permisos de tiempo de compilación elevados a los usuarios que emplean activadores para invocar una compilación. Esto se aplica tanto a la cuenta de servicio predeterminada de Cloud Build como a las cuentas de servicio especificadas por el usuario. Ten en cuenta las siguientes implicaciones de seguridad al usar activadores de compilación:
- Un usuario que no tenga acceso a tu proyecto de Cloud, pero que tenga acceso de escritura al repositorio asociado a los activadores de compilación del proyecto, tendrá permisos para cambiar el código que se está compilando.
- Si usas activadores de solicitudes de extracción de GitHub, cualquier usuario que tenga acceso de lectura al repositorio puede enviar una solicitud de extracción, lo que puede ejecutar una compilación que incluya cambios en el código de la solicitud de extracción. Para saber cómo inhabilitar este comportamiento en los activadores de solicitudes de extracción de GitHub, consulta el artículo sobre creación de activadores de GitHub.
Te recomendamos que crees una cuenta de servicio con los roles necesarios para tu activador. Para obtener más información, consulta el artículo Configurar cuentas de servicio especificadas por el usuario. Para obtener más información sobre la cuenta de servicio predeterminada de Cloud Build y sus permisos asociados, consulta el artículo Cuenta de servicio de Cloud Build.
Siguientes pasos
- Consulta cómo iniciar compilaciones manualmente o configurar despliegues que requieran una invocación manual compilando código manualmente en repositorios de origen.
- Consulta cómo crear activadores de GitHub.
- Consulta cómo automatizar compilaciones en respuesta a eventos de Pub/Sub.
- Consulta cómo automatizar las compilaciones en respuesta a eventos de webhook.
- Consulta cómo ver los resultados de las compilaciones de los activadores de compilación.
- Consulta cómo realizar implementaciones azul-verde en Compute Engine.
- Consulta cómo solucionar errores de compilación.