Trabajar con factores desencadenantes - Amazon CodeCatalyst

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Trabajar con factores desencadenantes

Un activador de flujo de trabajo, o simplemente un activador, te permite iniciar la ejecución automática de un flujo de trabajo cuando se producen determinados eventos, como cuando se introduce un código. Es posible que desee configurar los activadores para evitar que los desarrolladores de software tengan que iniciar manualmente las ejecuciones del flujo de trabajo a través de la CodeCatalyst consola.

Puede utilizar tres tipos de activadores:

  • Empujar: un activador de inserción de código hace que se inicie la ejecución de un flujo de trabajo cada vez que se ejecuta una confirmación.

  • Solicitud de extracción: cuando se activa una solicitud de extracción, se inicia la ejecución de un flujo de trabajo cada vez que se crea, revisa o cierra una solicitud de extracción.

  • Programación: un activador de programación hace que la ejecución de un flujo de trabajo comience según el cronograma que tú definas. Considere la posibilidad de utilizar un activador programado para ejecutar versiones nocturnas de su software, de modo que la última versión esté lista para que los desarrolladores de software puedan trabajar en ella a la mañana siguiente.

Puedes usar activadores push, pull request y programables solos o combinados en el mismo flujo de trabajo.

sugerencia

Para ver un desencadenante en acción, lanza un proyecto con un plano. La mayoría de los blueprints contienen un flujo de trabajo con un activador. Busque la Trigger propiedad en el archivo de definición del flujo de trabajo del blueprint. Para obtener más información acerca de los esquemas, consulte Crear un proyecto con un plano.

Una configuración de disparadores común

En esta sección se describe cómo configurar los desencadenantes para una estrategia común de lanzamiento y ramificación de software.

Estrategia de lanzamiento y ramificación del software:

  • Tiene el código de la aplicación en un repositorio fuente.

  • Su main rama contiene el código finalizado que siempre está listo para su publicación.

  • Los desarrolladores de software realizan los cambios en las ramas de funciones ajenas a la rama. main

  • Tus desarrolladores de software crean una solicitud de cambios en la que se les pide que fusionen su rama de funciones con la rama de funciones main cuando la función esté lista.

    Quieres que esta solicitud de extracción inicie automáticamente un flujo de trabajo que cree y pruebe (pero no despliegue) la aplicación utilizando los archivos de la rama de funciones del desarrollador de software.

  • Los desarrolladores de software comprueban la compilación y las pruebas para asegurarse de que todo se ve bien. Luego, fusionan la solicitud de extracción en la main sucursal.

    Desea que la fusión inicie automáticamente un flujo de trabajo que cree e implemente el código de su aplicación.

Configuración propuesta de flujo de trabajo o activación:

Dada la estrategia de ramificación del software descrita anteriormente, es posible que desee utilizar dos flujos de trabajo:

  • El flujo de trabajo 1 crea y prueba tu aplicación cuando se crea o revisa una solicitud de extracción.

  • El flujo de trabajo 2 crea e implementa tu aplicación cuando se fusiona una solicitud de extracción.

El flujo de trabajo 1 tendría este aspecto:

Triggers: - Type: PULLREQUEST Branches: - main Events: - OPEN - REVISION Actions: BuildAction: instructions-for-building-the-app TestAction: instructions-for-test-the-app

El código de activación anterior inicia automáticamente la ejecución de un flujo de trabajo cada vez que un desarrollador de software crea una solicitud de extracción (o modifica una) solicitando la fusión de su rama de funciones con la main rama. CodeCatalyst inicia la ejecución de un flujo de trabajo con el código de la rama fuente (es decir, la rama de funciones del desarrollador). El flujo de trabajo crea e implementa la aplicación.

El flujo de trabajo 2 tendría este aspecto:

Triggers: - Type: PUSH Branches: - main Actions: BuildAction: instructions-for-building-the-app DeployAction: instructions-for-deploying-the-app

En el código de activación anterior, cuando main se produce una fusión, se activa el PUSH activador. CodeCatalyst inicia la ejecución de un flujo de trabajo con el código de la main rama (que ahora incluye el código de la solicitud de extracción). El flujo de trabajo crea e implementa la aplicación.

Para obtener instrucciones sobre cómo añadir activadores a un archivo de definición de flujo de trabajo, consulteAñadir un gatillo para pulsar, tirar o programar.

Para ver más ejemplos de desencadenantes y explicaciones adicionales, consulteEjemplos de desencadenantes.

Consideraciones sobre los factores desencadenantes al ramificar

En esta sección, se describen algunas de las principales consideraciones a la hora de configurar activadores que incluyan sucursales.

  • Consideración 1: Tanto para los activadores de solicitudes push como para los de extracción, si va a especificar una rama, debe especificar la rama de destino (o «destino») en la configuración del disparador. Nunca especifiques la rama de origen (o «de»).

    En el siguiente ejemplo, una pulsación desde cualquier rama para main activar el flujo de trabajo.

    Triggers: - Type: PUSH Branches: - main

    En el siguiente ejemplo, una solicitud de extracción desde cualquier sucursal main activa el flujo de trabajo.

    Triggers: - Type: PULLREQUEST Branches: - main Events: - OPEN - REVISION
  • Consideración 2: En el caso de los activadores push, una vez activado el flujo de trabajo, el flujo de trabajo se ejecutará con el archivo de definición del flujo de trabajo y los archivos fuente de la rama de destino.

  • Consideración 3: En el caso de los activadores de solicitudes de extracción, una vez activado el flujo de trabajo, el flujo de trabajo se ejecutará con el archivo de definición del flujo de trabajo y los archivos fuente de la rama de origen (aunque hayas especificado la rama de destino en la configuración del desencadenador).

  • Consideración 4: Es posible que el mismo activador exacto en una rama no se ejecute en otra rama.

    Considera el siguiente disparador pulsador:

    Triggers: - Type: PUSH Branches: - main

    Si el archivo de definición del flujo de trabajo que contiene este activador existe main y se clona en éltest, el flujo de trabajo nunca empezará automáticamente a utilizar los archivos incluidos test (aunque puede iniciar el flujo de trabajo manualmente si utiliza los archivos detest). Revise las consideraciones 1 y 2 para entender por qué el flujo de trabajo nunca se ejecutará automáticamente con los archivos incluidos. test

    Considera también el siguiente desencadenante de una solicitud de atracción:

    Triggers: - Type: PULLREQUEST Branches: - main Events: - OPEN - REVISION

    Si el archivo de definición del flujo de trabajo que contiene este activador existe enmain, el flujo de trabajo nunca se ejecutará con los archivos que contienemain. (Sin embargo, si crea una test ramificación a partir demain, el flujo de trabajo se ejecutará con los archivos incluidos)test. Revise las consideraciones 1 y 3 para entender por qué.

Añadir un gatillo para pulsar, tirar o programar

Sigue las siguientes instrucciones para añadir un activador de inserción, tracción o programación a tu flujo de trabajo.

Visual
Para añadir un disparador (editor visual)
  1. Abra la CodeCatalyst consola en https://codecatalyst.aws/.

  2. Elija el proyecto.

  3. En el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.

  4. Elija el nombre de su flujo de trabajo. Puede filtrar por el nombre del repositorio o la rama de origen donde está definido el flujo de trabajo, o bien filtrar por el nombre del flujo de trabajo.

  5. Elija Editar.

  6. Elija Visual.

  7. En el diagrama de flujo de trabajo, seleccione las casillas Origen y Desencadenadores.

  8. En el panel de configuración, seleccione Añadir disparador.

  9. En el cuadro de diálogo Agregar activador, introduzca la información en los campos, de la siguiente manera.

    Tipo de disparador

    Especifique el tipo de disparador. Puede utilizar uno de los siguientes valores:

    • Push (editor visual) o PUSH (editor YAML)

      Un disparador push inicia la ejecución de un flujo de trabajo cuando se envía un cambio a tu repositorio de origen. La ejecución del flujo de trabajo utilizará los archivos de la rama a la que vayas a realizar el envío (es decir, la rama de destino).

    • Pull Request (editor visual) o PULLREQUEST (editor YAML)

      Un activador de solicitudes de extracción inicia la ejecución de un flujo de trabajo cuando se abre, actualiza o cierra una solicitud de extracción en tu repositorio de origen. La ejecución del flujo de trabajo utilizará los archivos de la rama de la que estás extrayendo (es decir, la rama de origen).

    • Programación (editor visual) o SCHEDULE (editor YAML)

      Un activador de programación inicia las ejecuciones del flujo de trabajo según una programación definida por una expresión cron que usted especifique. Se iniciará una ejecución de flujo de trabajo independiente para cada rama del repositorio de origen utilizando los archivos de la rama. (Para limitar las ramas en las que se activa el activador, usa el campo Ramas (editor visual) o la Branches propiedad (editor YAML).)

      Al configurar un activador programado, siga estas pautas:

      • Utilice solo un activador de programación por flujo de trabajo.

      • Si ha definido varios flujos de trabajo en su CodeCatalyst espacio, le recomendamos que no programe más de 10 de ellos para que se inicien simultáneamente.

      • Asegúrese de configurar la expresión cron del disparador con el tiempo suficiente entre ejecuciones. Para obtener más información, consulte Expression.

    Para ver ejemplos, consulte Ejemplos de desencadenantes.

    Eventos para la solicitud de cambios

    Este campo solo aparece si seleccionaste el tipo de activación de la solicitud de extracción.

    Especifica el tipo de eventos de solicitud de extracción que iniciarán la ejecución de un flujo de trabajo. Los valores válidos son los siguientes:

    • Se crea una solicitud de extracción (editor visual) o OPEN (editor YAML)

      La ejecución del flujo de trabajo se inicia cuando se crea una solicitud de extracción.

    • La solicitud de extracción está cerrada (editor visual) o CLOSED (editor YAML)

      La ejecución del flujo de trabajo se inicia cuando se cierra una solicitud de extracción. El comportamiento del CLOSED evento es complicado y se entiende mejor con un ejemplo. Para obtener más información, consulte Ejemplo: un gatillo al que se tira, se ramifica y se activa el evento «CERRADO».

    • Se ha realizado una nueva revisión en pull request (editor visual) o REVISION (editor YAML)

      La ejecución del flujo de trabajo se inicia cuando se crea una revisión de una solicitud de extracción. La primera revisión se crea cuando se crea la solicitud de extracción. Después de eso, se crea una nueva revisión cada vez que alguien envía una nueva confirmación a la rama de origen especificada en la solicitud de extracción. Si incluyes el REVISION evento en el activador de la solicitud de cambios, puedes omitirlo, ya que REVISION es un superconjunto de. OPEN OPEN

    Puedes especificar varios eventos en el mismo activador de la solicitud de atracción.

    Para ver ejemplos, consulte Ejemplos de desencadenantes.

    Programación

    Este campo solo aparece si seleccionaste el tipo de activación Programar.

    Especifique la expresión cron que describe cuándo desea que se ejecute el flujo de trabajo programado.

    Las expresiones cron utilizadas CodeCatalyst utilizan la siguiente sintaxis de seis campos, en la que cada campo está separado por un espacio:

    minutos , horas days-of-month, mes, año days-of-week

    Ejemplos de expresiones cron

    Minutos Horas Días del mes Mes Días de la semana Año Significado

    0

    0

    ?

    *

    MON-FRI

    *

    Ejecuta un flujo de trabajo a medianoche (UTC+0) de lunes a viernes.

    0

    2

    *

    *

    ?

    *

    Ejecuta un flujo de trabajo a las 2:00 a. m. (UTC+0) todos los días.

    15

    22

    *

    *

    ?

    *

    Ejecuta un flujo de trabajo a las 22:15 (UTC+0) todos los días.

    0/30

    22-2

    ?

    *

    SAT-SUN

    *

    Ejecuta un flujo de trabajo cada 30 minutos de sábado a domingo, entre las 22:00 del día de inicio y las 2:00 del día siguiente (UTC+0).

    45

    13

    L

    *

    ?

    2023-2027

    Ejecuta un flujo de trabajo a las 13:45 (UTC+0) del último día del mes entre los años 2023 y 2027, ambos inclusive.

    Al especificar las expresiones cron CodeCatalyst, asegúrate de seguir estas pautas:

    • Especifique una sola expresión cron por SCHEDULE activador.

    • Escribe la expresión cron entre comillas dobles (") en el editor YAML.

    • Especifique la hora en hora universal coordinada (UTC). No se admiten otras zonas horarias.

    • Configure al menos 30 minutos entre ejecuciones. No se admite una cadencia más rápida.

    • Especifique el days-of-weekcampo days-of-montho, pero no ambos. Si especifica un valor o un asterisco (*) en uno de los campos, debe utilizar un signo de interrogación (?) en el otro. El asterisco significa «todos» y el signo de interrogación significa «cualquiera».

    Para obtener más ejemplos de expresiones cron e información sobre caracteres comodín?, como, y *L, consulte la referencia sobre expresiones cron en la Guía del usuario de Amazon EventBridge . Las expresiones cron CodeCatalyst funcionan EventBridge y funcionan exactamente de la misma manera.

    Para ver ejemplos de activadores de horarios, consulteEjemplos de desencadenantes.

    Ramas y patrón de ramas

    (Opcional)

    Especifique las ramas del repositorio de origen que el activador supervisa para saber cuándo iniciar la ejecución de un flujo de trabajo. Puedes usar patrones de expresiones regulares para definir los nombres de tus ramas. Por ejemplo, úsalo main.* para hacer coincidir todas las ramas que comiencen por. main

    Las ramas que se deben especificar son diferentes en función del tipo de disparador:

    • En el caso de un disparador automático, especifique las ramas a las que va a enviar el mensaje, es decir, las sucursales de destino. Se iniciará una ejecución de flujo de trabajo por cada sucursal coincidente, utilizando los archivos de la sucursal coincidente.

      Ejemplos: main.*, mainline

    • Para activar una solicitud de cambios, especifica las sucursales a las que vas a enviar mensajes, es decir, las sucursales de destino. Se iniciará una ejecución de flujo de trabajo por cada rama coincidente, utilizando el archivo de definición del flujo de trabajo y los archivos fuente de la rama de origen (no de la rama coincidente).

      Ejemplos:main.*,mainline, v1\-.* (coincide con las ramas que comienzan conv1-)

    • Para activar una programación, especifique las ramas que contienen los archivos que desea que utilice la ejecución programada. Se iniciará una ejecución de flujo de trabajo por cada rama coincidente, utilizando el archivo de definición del flujo de trabajo y los archivos fuente de la rama coincidente.

      Ejemplos: main.*, version\-1\.0

    nota

    Si no especificas las ramas, el activador monitoriza todas las ramas del repositorio de origen e iniciará una ejecución de flujo de trabajo con el archivo de definición del flujo de trabajo y los archivos fuente de:

    Para obtener más información sobre las ramas y los activadores, consulteConsideraciones sobre los factores desencadenantes al ramificar.

    Para obtener más ejemplos, consulte Ejemplos de desencadenantes.

    Se han modificado los archivos

    Este campo solo aparece si ha seleccionado el tipo de activación de la solicitud Push o Pull.

    Especifique los archivos o carpetas del repositorio de origen que el activador supervisa para saber cuándo iniciar la ejecución de un flujo de trabajo. Puede utilizar expresiones regulares para hacer coincidir los nombres o las rutas de los archivos.

    Para ver ejemplos, consulte Ejemplos de desencadenantes.

  10. (Opcional) Selecciona Validar para validar el código YAML del flujo de trabajo antes de confirmarlo.

  11. Selecciona Confirmar, introduce un mensaje de confirmación y vuelve a seleccionar Confirmar.

YAML
Para añadir un disparador (editor YAML)
  1. Abre la CodeCatalyst consola en https://codecatalyst.aws/.

  2. Elija el proyecto.

  3. En el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.

  4. Elija el nombre de su flujo de trabajo. Puede filtrar por el nombre del repositorio o la rama de origen donde está definido el flujo de trabajo, o bien filtrar por el nombre del flujo de trabajo.

  5. Elija Editar.

  6. Elige YAML.

  7. Añada una Triggers sección y propiedades subyacentes utilizando el siguiente ejemplo como guía. Para obtener más información, consulte Triggers en la Referencia de definición de flujo de trabajo.

    Un disparador de inserción de código podría tener este aspecto:

    Triggers: - Type: PUSH Branches: - main

    Un activador de pull request podría tener este aspecto:

    Triggers: - Type: PULLREQUEST Branches: - main.* Events: - OPEN - REVISION - CLOSED

    Un activador programado podría tener este aspecto:

    Triggers: - Type: SCHEDULE Branches: - main.* # Run the workflow at 1:15 am (UTC+0) every Friday until the end of 2023 Expression: "15 1 ? * FRI 2022-2023"

    Para ver más ejemplos de expresiones cron que puede utilizar en la Expression propiedad, consulteExpression.

    Para ver más ejemplos de activadores push, pull request y schedule, consulteEjemplos de desencadenantes.

  8. (Opcional) Selecciona Validar para validar el código YAML del flujo de trabajo antes de confirmarlo.

  9. Selecciona Confirmar, introduce un mensaje de confirmación y vuelve a seleccionar Confirmar.

Ejemplos de desencadenantes

Los siguientes ejemplos muestran cómo añadir distintos tipos de activadores en el archivo de definición del flujo de trabajo.

Ejemplo: un sencillo disparador por pulsación de código

El siguiente ejemplo muestra un activador que inicia la ejecución de un flujo de trabajo cada vez que se envía código a cualquier rama del repositorio de código fuente.

Cuando se activa este activador, se CodeCatalyst inicia una ejecución de flujo de trabajo con los archivos de la rama a la que estás accediendo (es decir, la rama de destino).

Por ejemplo, si presionas una confirmación amain, se CodeCatalyst inicia una ejecución de flujo de trabajo utilizando el archivo de definición del flujo de trabajo y otros archivos fuente. main

Como otro ejemplo, si se envía una confirmación afeature-branch-123, se CodeCatalyst inicia una ejecución de flujo de trabajo utilizando el archivo de definición del flujo de trabajo y otros archivos fuente activados. feature-branch-123

Triggers: - Type: PUSH
nota

Si desea que la ejecución de un flujo de trabajo se inicie solo cuando presionemain, consulte. Ejemplo: un simple disparador de «pulsar el botón principal»

Ejemplo: un simple disparador de «pulsar el botón principal»

En el siguiente ejemplo, se muestra un activador que inicia la ejecución de un flujo de trabajo cada vez que se envía código a la rama (mainy solo a la rama) del main repositorio de código fuente.

Triggers: - Type: PUSH Branches: - main

Ejemplo: un sencillo activador de una solicitud de extracción

El siguiente ejemplo muestra un activador que inicia la ejecución de un flujo de trabajo cada vez que se crea o revisa una solicitud de extracción en tu repositorio de origen.

Cuando se activa este activador, CodeCatalyst inicia la ejecución de un flujo de trabajo con el archivo de definición del flujo de trabajo y otros archivos fuente de la rama de la que estás extrayendo (es decir, la rama de origen).

Por ejemplo, si creas una solicitud de extracción con una rama de origen llamada feature-123 y una rama de destino llamadamain, CodeCatalyst inicia una ejecución de flujo de trabajo utilizando el archivo de definición del flujo de trabajo y otros archivos de origen. feature-123

Triggers: - Type: PULLREQUEST Events: - OPEN - REVISION

Ejemplo: un sencillo disparador programado

El siguiente ejemplo muestra un activador que inicia la ejecución de un flujo de trabajo a medianoche (UTC+0) de lunes a viernes.

Cuando se activa este activador, se CodeCatalyst inicia una sola ejecución de flujo de trabajo para cada rama del repositorio de origen que contenga un archivo de definición de flujo de trabajo con este activador.

Por ejemplo, si tienes tres ramas en tu repositorio de origen, main release-v1feature-123, y cada una de estas ramas contiene un archivo de definición de flujo de trabajo con el siguiente desencadenante, CodeCatalyst inicia tres ejecuciones de flujo de trabajo: una con los archivos de dentromain, otra con los archivos de y otra con los archivos defeature-123. release-v1

Triggers: - Type: SCHEDULE Expression: "0 0 ? * MON-FRI *"

Para ver más ejemplos de expresiones cron que puede utilizar en la Expression propiedad, consulteExpression.

Ejemplo: un disparador con un horario y ramificaciones

El siguiente ejemplo muestra un disparador que inicia una ejecución de flujo de trabajo a las 18:15 (UTC+0) todos los días.

Cuando se activa este activador, CodeCatalyst inicia una ejecución de flujo de trabajo con los archivos de la main rama e inicia ejecuciones adicionales para cada rama que comience con. release-

Por ejemplo, si tiene ramas denominadasmain, release-v1bugfix-1, y bugfix-2 en el repositorio de origen, CodeCatalyst inicia dos ejecuciones de flujo de trabajo: una con los archivos de y otra con los archivos derelease-v1. main No inicia las ejecuciones de flujo de trabajo de las bugfix-1 ramas bugfix-1 y.

Triggers: - Type: SCHEDULE Expression: "15 18 * * ? *" Branches: - main - release\-.*

Para ver más ejemplos de expresiones cron que puede utilizar en la Expression propiedad, consulteExpression.

Ejemplo: un disparador con un horario, una pulsación y ramificaciones

El siguiente ejemplo muestra un activador que inicia un flujo de trabajo que se ejecuta a medianoche (UTC+0) todos los días y siempre que se envía código a la sucursal. main

En este ejemplo:

  • La ejecución de un flujo de trabajo comienza todos los días a medianoche. La ejecución del flujo de trabajo utiliza el archivo de definición del flujo de trabajo y otros archivos fuente de la main rama.

  • La ejecución de un flujo de trabajo también se inicia cada vez que envías una confirmación a la main rama. La ejecución del flujo de trabajo utiliza el archivo de definición del flujo de trabajo y otros archivos de origen de la rama de destino (main).

Triggers: - Type: SCHEDULE Expression: "0 0 * * ? *" Branches: - main - Type: PUSH Branches: - main

Para ver más ejemplos de expresiones cron que puede utilizar en la Expression propiedad, consulteExpression.

Ejemplo: un gatillo que se tira y se ramifica

En el siguiente ejemplo, se muestra un activador que inicia la ejecución de un flujo de trabajo cada vez que alguien abre o modifica una solicitud de extracción con una sucursal de destino llamadamain. Aunque la rama especificada en la Triggers configuración lo seamain, la ejecución del flujo de trabajo utilizará el archivo de definición del flujo de trabajo y otros archivos fuente de la rama de origen (que es la rama de la que se extrae).

Triggers: - Type: PULLREQUEST Branches: - main Events: - OPEN - REVISION

Ejemplo: un gatillo al que se tira, se ramifica y se activa el evento «CERRADO»

En el siguiente ejemplo, se muestra un activador que inicia la ejecución de un flujo de trabajo cada vez que se cierra una solicitud de extracción en una rama que comienza conmain.

En este ejemplo:

  • Cuando cierras una solicitud de extracción con una rama de destino por la que comienzamain, una ejecución de flujo de trabajo se inicia automáticamente con el archivo de definición del flujo de trabajo y otros archivos fuente de la rama de origen (ahora cerrada).

  • Si has configurado tu repositorio de origen para que elimine las ramas automáticamente después de fusionar una solicitud de extracción, estas sucursales nunca tendrán la oportunidad de entrar en ese CLOSED estado. Esto significa que las sucursales fusionadas no activarán el CLOSED activador de la solicitud de extracción. La única forma de activar el CLOSED activador en este escenario es cerrar la solicitud de extracción sin fusionarla.

Triggers: - Type: PULLREQUEST Branches: - main.* Events: - CLOSED

Ejemplo: un disparador con una pulsación, ramas y archivos

El siguiente ejemplo muestra un activador que inicia la ejecución de un flujo de trabajo cada vez que se realiza un cambio en el filename.txt archivo, o en cualquier archivo del src directorio, de la main rama.

Cuando se activa este activador, CodeCatalyst inicia una ejecución de flujo de trabajo con el archivo de definición del flujo de trabajo y otros archivos fuente de la main rama.

Triggers: - Type: PUSH Branches: - main FilesChanged: - filename.txt - src\/.*