Automatizar compilaciones en respuesta a eventos de webhook

Cloud Build te permite definir activadores de webhook, que pueden autenticar y aceptar eventos de webhook entrantes. Estos eventos, que se envían a una URL personalizada, te permiten conectar directamente sistemas externos y sistemas externos de gestión de código fuente, como Bitbucket.com, Bitbucket Server o GitLab, a Cloud Build mediante eventos de webhook.

Con los activadores de webhook, puedes definir un archivo de configuración de compilación insertado en lugar de especificar una fuente al crear el activador. La configuración de compilación insertada te permite controlar las operaciones de Git y definir el resto de la compilación.

En esta página se explica cómo crear activadores de webhook para automatizar compilaciones en respuesta a eventos de webhook.

Antes de empezar

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

  • Para usar los comandos gcloud de esta página, instala Google Cloud CLI.

Crear activadores de webhook

Consola

Para crear un activador de webhook con la Google Cloud consola, sigue estos pasos:

  1. Abre la página Activadores:

    Abre la página Activadores de compilación.

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

  3. Haz clic en Crear activador.

  4. Introduce los siguientes ajustes del activador:

    • Nombre: el nombre del activador.
    • Región: selecciona la región del activador.

    • Si el archivo de configuración de compilación asociado al activador especifica un grupo privado, Cloud Build usará ese grupo para ejecutar la compilación. En este caso, la región que especifiques en el activador debe coincidir con la región en la que hayas creado tu grupo privado.

    • Si el archivo de configuración de compilación asociado al activador no especifica un grupo privado, Cloud Build usará el grupo predeterminado para ejecutar la compilación en la misma región que el activador.

       
      
      • Descripción (opcional): descripción del activador.
      • Evento: selecciona Evento de webhook para configurar el activador de forma que inicie compilaciones en respuesta a eventos de webhook entrantes.
      • URL del webhook: usa la URL del webhook para autenticar eventos de webhook entrantes.

        • Secreto: necesitarás un secreto para autenticar los eventos de webhook entrantes. Puedes crear un secreto o usar uno que ya tengas. Este secreto es independiente del asociado a tu clave SSH.

          Para crear un secreto, sigue estos pasos:

          1. Selecciona Usar un secreto nuevo (generado por Cloud Build).
          2. Haz clic en Crear secreto.

            Verás el cuadro emergente Crear un secreto de webhook.

          3. En el campo Nombre del secreto, introduce un nombre para el secreto.

          4. Haz clic en Crear secreto para guardar el secreto, que se creará y almacenará automáticamente en Secret Manager.

            Para usar un secreto que ya tengas, sigue estos pasos:

          5. Selecciona Usar un secreto que ya tengas o crear uno.

          6. En el campo Secreto, selecciona el nombre del secreto que quieras usar en el menú desplegable o sigue las instrucciones para añadir un secreto por ID de recurso.

          7. En el campo Versión del secreto, selecciona la versión del secreto en el menú desplegable.

            Si usas un secreto, es posible que tengas que conceder manualmente el rol Lector de recursos de Secret Manager a tu cuenta de servicio de Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Para obtener más información, consulta Asignar el rol de Secret Manager a tu cuenta de servicio.

          Una vez que hayas creado o seleccionado tu secreto, verás una vista previa de la URL de webhook. Tu URL contendrá una clave de API generada por Cloud Build y tu secreto. Si Cloud Build no puede obtener tu clave de API, puedes añadirla manualmente a la URL o consultar cómo obtener una clave de API si aún no tienes ninguna.

          Puedes usar la URL para invocar un evento de webhook haciendo una solicitud HTTP con el método POST.

          Usa el siguiente comando para invocar un evento de webhook:

          curl -X POST -H "Content-type: application/json" "https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/triggers/${TRIGGER_NAME}:webhook?key=${API_KEY}&secret=${SECRET_VALUE}&trigger=${TRIGGER_NAME}&projectId=${PROJECT_ID}" -d "{}"
          

          Una vez que hayas completado estos pasos, se asignará automáticamente el rol Permiso para acceder a los recursos de Secret Manager a tu agente de servicio de Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Si no ves que este rol se añade automáticamente a tu agente de servicio, sigue los pasos que se indican en Asignar el rol de Secret Manager a tu cuenta de servicio.

      • Fuente (opcional): selecciona la fuente que se va a compilar cuando se ejecute el activador de webhook. Si especificas una configuración de compilación insertada, no es necesario que especifiques la siguiente fuente. Puedes especificar 1.ª generación o 2.ª generación como fuente. Para obtener más información, consulta Repositorios de Cloud Build.

        • Repositorio: en la lista de repositorios disponibles, selecciona el que quieras.

        • Rama o Etiqueta: especifica una expresión regular con el valor de la rama o de la etiqueta que quieras que coincida. Para obtener información sobre la sintaxis válida de las expresiones regulares, consulta la sintaxis de RE2.

        • Control de comentarios: si has seleccionado Solicitud de extracción (solo aplicación de GitHub) como Evento, elige una de las siguientes opciones para controlar si el activador ejecutará automáticamente una compilación:

          • Obligatorio excepto para propietarios y colaboradores: cuando un propietario o colaborador del repositorio crea o actualiza una solicitud de extracción, el activador ejecuta automáticamente las compilaciones. Si un colaborador externo inicia la acción, las compilaciones solo se ejecutarán después de que un propietario o colaborador añada un comentario /gcbrun en la solicitud de extracción.

          • Obligatorio: cuando cualquier colaborador cree o actualice una solicitud de extracción, las compilaciones solo se ejecutarán después de que un propietario o colaborador comente /gcbrun en la solicitud de extracción. Las compilaciones se ejecutan cada vez que se hace un cambio en una solicitud de extracción.

          • No es obligatorio: cuando cualquier colaborador crea o actualiza una solicitud de extracción, los activadores ejecutan las compilaciones automáticamente.

      • 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. Si no ha especificado un repositorio de origen, debe seleccionar un archivo de configuración de compilación en línea como opción de configuració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 es Dockerfile 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 la Dockerfile o de la imagen del buildpack, verás una vista previa del comando docker build o pack 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.

          En el siguiente ejemplo, el archivo de configuración de compilación insertado registra el eco de "hello world":

           steps:
           - name: 'ubuntu'
             args: ['echo', 'hello world']
          
      • Sustituciones (opcional): si has seleccionado el archivo de configuración de compilación como opción de configuración de compilación o has creado un archivo de configuración de compilación insertado, puedes definir variables de sustitución específicas del activador en este campo. También puede obtener datos mediante enlaces de carga útil al definir valores de variables de sustitución.

      • Filtros (opcional): puedes crear una regla en un activador que determine si este ejecutará una compilación en función de las variables de sustitución.

      1. Haz clic en Crear para crear el activador de compilación.

    gcloud

    (Opcional) Obtener una clave de API

    Para autenticar el evento de webhook entrante, necesitas una clave de API.

    Para obtener una clave de API, sigue estos pasos:

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

      Abre la página Credenciales.

    2. Haz clic en Crear credenciales.

    3. Haz clic en Clave de API.

      Verás un cuadro de diálogo con la clave de API que has creado. Anota tu clave de API.

    4. Si quieres restringir tu clave para aplicaciones de productos, haz clic en Restringir clave para completar los pasos adicionales para proteger tu clave. De lo contrario, haz clic en Cerrar.

      Para saber cómo restringir tu clave, consulta el artículo Aplicar restricciones a claves de API.

    (Opcional) Asignar el rol de Secret Manager a tu cuenta de servicio

    Cloud Build concede automáticamente el rol Lector de secretos de Secret Manager a las cuentas de servicio que lo necesiten durante la configuración de secretos. Si no ves que este rol se ha concedido automáticamente a la cuenta de servicio necesaria, sigue estos pasos para añadirlo manualmente y que tu cuenta de servicio tenga acceso a tu secreto:

    1. Abre la página de gestión de identidades y accesos en la Google Cloud consola:

      Abre la página Gestión de identidades y accesos.

    2. Opcional: Para ver las cuentas proporcionadas por Google, selecciona la casilla Incluir concesiones de roles proporcionadas por Google.

    3. Anota la cuenta de servicio de compilación a la que quieras asignar el rol.

    4. Abre la página Secret Manager en la Google Cloud consola:

      Abre la página Secret Manager.

    5. Haz clic en el nombre del secreto.

      Verás la página Detalles del secreto.

      1. Haz clic en la pestaña Permisos.

      2. Haz clic en Conceder acceso.

        Verás el panel Dar acceso.

      3. En la sección Añadir principales, añade el correo asociado a la cuenta de servicio de compilación.

      4. En la sección Asignar roles, selecciona Secret Manager > Permiso para acceder a los recursos de Secret Manager.

      5. Haz clic en Guardar.

    Siguientes pasos