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
-
Enable the Cloud Build API.
- Debes tener la función 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 en Cloud Source Repositories están conectadas 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.
Si conectas un repositorio externo, como uno alojado en GitHub o Bitbucket, necesitarás permisos de administrador en la 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:
Abre la página Activadores en la consola de Google Cloud.
Selecciona tu proyecto y haz clic en Open.
Selecciona la región en la que deseas crear tu activador en el menú desplegable Región.
Haz clic en Conectar repositorio.
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.
Haga clic en Continue.
Autentica el repositorio de código fuente con tu nombre de usuario y contraseña.
En la lista de repositorios disponibles, selecciona el repositorio que deseas y, luego, haz clic en Conectar.
Para los repositorios externos, como GitHub y Bitbucket, debes tener permisos a nivel de propietario para el proyecto de Google Cloud en funcionamiento.
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
Abre la página Activadores en la consola de Google Cloud.
Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.
Haz clic en Abrir.
Haz clic en Crear activador.
Ingresa las siguientes opciones de configuración del activador:
Nombre: Ingresa un nombre para el activador.
Región: Selecciona la región para 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 tu región, Cloud Build usa la región especificada en tu archivo de configuración de compilación para ejecutar tu compilación. Puede ser la región de la grupo privado, si especificas un grupo privado en tu archivo de configuración de compilación, o el grupo predeterminado global si no especificas uno 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 compilaciones a partir de confirmaciones de solicitud de extracción.
Fuente: Selecciona 1a generación o 2a generación como la fuente. Solo puedes conectar repositorios de GitHub y GitHub Enterprise cuando selecciona 2nd Generation como la fuente. Para obtener más información, consulta Repositorios de Cloud Build.
- 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. 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 la compilación, Cloud Build copia el contenido de tu repositorio en
/workspace
, el directorio de trabajo predeterminado de 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.Para permitir solo compilaciones de fuentes específicas, establece una política de la organización para las integraciones permitidas (
constraints/cloudbuild.allowedIntegrations
) para denegar la interacción con la fuente definida en tu activador. La organización anula el activador, y tu compilación no se ejecuta. Para obtener más información, consulta Cómo se bloquean las compilaciones 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 ignorarREADME.md
en cualquier directorio y especificassrc/*
en Archivos incluidos a fin de comenzar una compilación a partir de los cambios en cualquier archivo de la carpetasrc/
. Ahora bien, si realizas un cambio ensrc/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 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 esDockerfile
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 elDockerfile
o el nombre de la imagen del paquete de compilación, verás una vista previa del comandodocker build
opack
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 Open Editor para escribir tu archivo de configuración de compilación en la consola de Google Cloud con sintaxis YAML o JSON. Haz clic en Listo para guardar la configuración de tu compilació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
- Tipo: Selecciona el tipo de configuración que usarás para la compilación.
Use private pool: Este campo aparece si seleccionaste Dockerfile como opción de Configuration. Selecciona esta casilla de verificación si tienes tu 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.
Approval (opcional): Marca la casilla para que se requiera 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, Cuenta de servicio heredada de Cloud Build se usa si están disponibles para tu proyecto.
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 heredada de Cloud Build si está disponible para tu proyecto.
- [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 este marcador, Cuenta de servicio heredada de Cloud Build se usa si están disponibles para tu proyecto.- [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 (opcional). para mostrar registros de compilación de tus repositorios. Esta marca es compatible con compilaciones de los 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:
Abre la página Activadores en la consola de Google Cloud.
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:
Abre la página Historial de Cloud Build en la consola de Google Cloud.
Haz clic en el ID de la compilación que deseas volver a enviar para su aprobación.
Haz clic en Volver a compilar en la parte superior de la página para volver a enviar la compilación. aprobación.
Tu compilación comenzará cuando un usuario con permisos la apruebe. Para Obtén más información sobre las aprobaciones de Cloud Build, consulta Gate se basa en la aprobación.
Actualiza un activador de compilación
Console
Abre la página Activadores en la consola de Google Cloud.
Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.
Haz clic en Abrir.
Ubica la fila con el activador que deseas actualizar.
Haz clic en el menú (puntos suspensivos verticales) que se ubica en el extremo derecho de la fila.
Selecciona Editar.
gcloud
Para actualizar un activador, sigue estos pasos:
Exporta el activador que deseas actualizar:
gcloud beta 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 comoexamples/trigger.yaml
. Ten en cuenta que el nombre de archivo de tu activador debe tener la extensión.yaml
.
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
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.
Guarda el archivo.
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
Abre la página Activadores en la consola de Google Cloud.
Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.
Haz clic en Abrir.
Ubica la fila con el activador que deseas inhabilitar.
Haz clic en el menú (puntos suspensivos verticales) que se ubica en el extremo derecho de la fila.
Selecciona Inhabilitar.
gcloud
Para inhabilitar un activador, sigue estos pasos:
Exporta el activador que deseas inhabilitar:
gcloud beta 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 comoexamples/trigger.yaml
. Ten en cuenta que el nombre de archivo de tu activador debe tener la extensión.yaml
.
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
Agrega el campo
disabled
al final del archivo y establece el valor comoTrue
.disabled: True
Guarde el archivo.
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
Abre la página Activadores en la consola de Google Cloud.
Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.
Haz clic en Abrir.
Ubica la fila con el activador que deseas borrar.
Haz clic en el menú (puntos suspensivos verticales) que se ubica en el extremo derecho de la fila.
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
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 a la cuenta de servicio predeterminada de Cloud Build y a las cuentas de servicio especificadas por el usuario. Ten en cuenta las siguientes políticas de seguridad consecuencias cuando se usan 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 práctica recomendada de seguridad es crear una cuenta de servicio roles para tu activador. Para obtener más información, consulta Configura cuentas de servicio especificadas por el usuario. Para obtener más información sobre el servicio heredado de Cloud Build y los permisos asociados, consulta el servicio de Cloud Build, cuenta de servicio.
¿Qué sigue?
- Aprende a iniciar compilaciones manualmente o configurar Implementaciones que requieren invocación manual a través de la compilación manual de código en repositorios de origen.
- Aprende a crear activadores de GitHub.
- Aprende a automatizar compilaciones en respuesta a eventos de Pub/Sub.
- Obtén más información sobre cómo automatizar compilaciones en respuesta a eventos de webhook.
- Obtén más información para ver los resultados de compilación de los activadores de compilación.
- Obtén información para realizar implementaciones azul-verde en Compute Engine.
- Obtén más información para solucionar errores de compilación.