Configuración del comportamiento de puesta en cola de las corridas - 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.

Configuración del comportamiento de puesta en cola de las corridas

De forma predeterminada CodeCatalyst, en Amazon, cuando se ejecutan varios flujos de trabajo al mismo tiempo, los pone en CodeCatalyst cola y los procesa uno por uno, en el orden en que se iniciaron. Puede cambiar este comportamiento predeterminado especificando un modo de ejecución. Hay varios modos de ejecución:

  • (Predeterminado) Modo de ejecución en cola: CodeCatalyst los procesos se ejecutan uno por uno

  • Modo de ejecución reemplazado: CodeCatalyst los procesos se ejecutan uno por uno, y las ejecuciones más nuevas sustituyen a las antiguas

  • Modo de ejecución paralela: CodeCatalyst los procesos se ejecutan en paralelo

Para obtener más información sobre las ejecuciones de flujos de trabajo, consulteEjecución de un flujo de trabajo.

Acerca del modo de ejecución en cola

En el modo de ejecución en cola, las ejecuciones se producen en serie y las ejecuciones en espera forman una cola.

Las colas se forman en los puntos de entrada a las acciones y los grupos de acciones, por lo que puede tener varias colas en el mismo flujo de trabajo (consulte). Figure 1 Cuando una ejecución en cola entra en una acción, la acción se bloquea y no puede entrar ninguna otra ejecución. Cuando la ejecución finaliza y sale de la acción, la acción se desbloquea y está lista para la siguiente ejecución.

Figure 1ilustra un flujo de trabajo configurado en modo de ejecución en cola. Se muestra lo siguiente:

  • Siete ejecuciones recorriendo el flujo de trabajo.

  • Dos colas: una fuera de la entrada a la fuente de entrada (Repo:main) y otra fuera de la entrada a la acción. BuildTestActionGroup

  • Dos bloques bloqueados: la fuente de entrada (Repo:main) y el. BuildTestActionGroup

Así es como se desarrollarán las cosas a medida que se ejecute el flujo de trabajo y finalice el procesamiento:

  • Cuando RUN-4D444 termine de clonar el repositorio de fuentes, saldrá de la fuente de entrada y se unirá a la cola detrás de RUN-3C333. A continuación, el RUN-5e555 ingresará a la fuente de entrada.

  • Cuando el Run-1a111 termine de construirse y probarse, saldrá de la BuildTestActionGroupacción y entrará en ella. DeployAction A continuación, Run-2b222 entrará en acción. BuildTestActionGroup

Figura 1: Un flujo de trabajo configurado en «modo de ejecución en cola»

Un flujo de trabajo configurado en «modo de ejecución en cola»

Utilice el modo de ejecución en cola si:

  • Desea mantener una one-to-one relación entre las funciones y las ejecuciones; estas funciones pueden agruparse cuando se utiliza el modo sustituido. Por ejemplo, cuando se fusiona la entidad 1 en la confirmación 1, se inicia la ejecución 1, y cuando se fusiona la entidad 2 en la confirmación 2, se inicia la ejecución 2, y así sucesivamente. Si utilizara el modo sustituido en lugar del modo en cola, sus entidades (y confirmaciones) se agruparán en la ejecución que sustituirá a las demás.

  • Quieres evitar las condiciones de carrera y los problemas inesperados que puedan producirse al utilizar el modo paralelo. Por ejemplo, si dos desarrolladores de software, Wang y Saanvi, inician las ejecuciones del flujo de trabajo aproximadamente al mismo tiempo para implementarlas en un ECS clúster de Amazon, la ejecución de Wang podría iniciar las pruebas de integración en el clúster, mientras que la ejecución de Saanvi implementa un nuevo código de aplicación en el clúster, lo que provoca que las pruebas de Wang fallen o prueben el código incorrecto. Como otro ejemplo, es posible que tengas un objetivo que no tenga un mecanismo de bloqueo, en cuyo caso las dos corridas podrían sobrescribir los cambios de la otra de forma inesperada.

  • Desea limitar la carga de los recursos informáticos que se CodeCatalyst utilizan para procesar las ejecuciones. Por ejemplo, si tienes tres acciones en tu flujo de trabajo, puedes realizar un máximo de tres ejecuciones al mismo tiempo. Imponer un límite al número de ejecuciones que se pueden realizar a la vez hace que el rendimiento de las ejecuciones sea más predecible.

  • Desea limitar el número de solicitudes que el flujo de trabajo realiza a servicios de terceros. Por ejemplo, su flujo de trabajo puede tener una acción de creación que incluya instrucciones para extraer una imagen de Docker Hub. Docker Hub limita el número de solicitudes de cambios que puedes realizar a un número determinado por hora y por cuenta, y si superas el límite, quedarás bloqueado. Si utilizas el modo de ejecución en cola para reducir el rendimiento de las ejecuciones, se generarán menos solicitudes a Docker Hub por hora, lo que limitará la posibilidad de que se produzcan bloqueos y los consiguientes errores de compilación y ejecución.

Tamaño máximo de cola: 50

Notas sobre el tamaño máximo de la cola:

  • El tamaño máximo de la cola se refiere al número máximo de ejecuciones permitido en todas las colas del flujo de trabajo.

  • Si una cola supera las 50 corridas, descarta la 51.ª y CodeCatalyst las siguientes.

Comportamiento de error:

Si una ejecución deja de responder mientras está siendo procesada por una acción, las carreras que estén detrás de ella permanecerán en la cola hasta que se agote el tiempo de espera de la acción. Las acciones se agotan al cabo de una hora.

Si una ejecución falla dentro de una acción, se permite continuar con la primera ejecución en cola que esté detrás de ella.

Acerca del modo de ejecución reemplazado

El modo de ejecución sustituida es el mismo que el modo de ejecución en cola, con la salvedad de que:

  • Si una ejecución en cola alcanza a otra ejecución de la cola, la ejecución posterior reemplaza (reemplaza) a la anterior, y esta última se cancela y se marca como «reemplazada».

  • Como resultado del comportamiento descrito en el primer bullet, una cola solo puede incluir una ejecución cuando se utiliza el modo de ejecución reemplazado.

Si se utiliza el flujo de trabajo Figure 1 como guía, si se aplica el modo de ejecución sustituido a este flujo de trabajo, se produciría lo siguiente:

  • El run-7g777 sustituiría a las otras dos corridas de la cola y sería la única ejecución que quedara en la cola #1. La Run-6f666 y la Run-5e555 se cancelarían.

  • La Run-3c333 reemplazaría a la Run-2b222 y sería la única carrera que quedara en la cola #2. La run-2b222 se cancelaría.

Utilice el modo de ejecución sustituido si desea:

  • mejor rendimiento que con el modo en cola

  • incluso menos solicitudes a servicios de terceros que con el modo en cola; esto es ventajoso si el servicio de terceros tiene límites de velocidad, como Docker Hub

Acerca del modo de ejecución paralela

En el modo de ejecución paralela, las ejecuciones son independientes entre sí y no hay que esperar a que se completen las demás para empezar. No hay colas y el rendimiento de las ejecuciones solo está limitado por la rapidez con la que se completen las acciones del flujo de trabajo.

Utilice el modo de ejecución paralela en entornos de desarrollo en los que cada usuario tiene su propia rama de funciones y se despliega en destinos que no comparten otros usuarios.

importante

Si tiene un objetivo compartido en el que pueden implementarlo varios usuarios, como una función Lambda en un entorno de producción, no utilice el modo paralelo, ya que pueden producirse condiciones de carrera. Se produce una condición de carrera cuando las ejecuciones de un flujo de trabajo en paralelo intentan cambiar un recurso compartido al mismo tiempo, lo que genera resultados impredecibles.

Número máximo de corridos paralelos: 1000 por CodeCatalyst espacio

Configuración del modo de ejecución

Puede configurar el modo de ejecución en cola, reemplazado o paralelo. El valor predeterminado es en cola.

Al cambiar el modo de ejecución de en cola o reemplazado a paralelo, CodeCatalyst cancela las ejecuciones que están en cola y permite que las ejecuciones que una acción está procesando actualmente finalicen antes de cancelarlas.

Al cambiar el modo de ejecución de paralelo a en cola o reemplazado, CodeCatalyst permite que se completen todas las ejecuciones paralelas que se estén ejecutando actualmente. Todas las ejecuciones que se inicien después de cambiar el modo de ejecución a en cola o sustituido utilizarán el nuevo modo.

Visual
Para cambiar el modo de ejecución mediante el 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 nombre o estado del flujo de trabajo.

  5. Elija Editar.

  6. En la parte superior derecha, selecciona Propiedades del flujo de trabajo.

  7. Expanda Avanzado y, en Modo de ejecución, elija una de las siguientes opciones:

    1. En cola: consulte Acerca del modo de ejecución en cola

    2. Reemplazado: consulte Acerca del modo de ejecución reemplazado

    3. Paralelo: véase Acerca del modo de ejecución paralela

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

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

YAML
Para cambiar el modo de ejecución mediante el YAML editor
  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 nombre o estado del flujo de trabajo.

  5. Elija Editar.

  6. Elija YAML.

  7. Añada la RunMode propiedad, de la siguiente manera:

    Name: Workflow_6d39 SchemaVersion: "1.0" RunMode: QUEUED|SUPERSEDED|PARALLEL

    Para obtener más información, consulte la descripción de la RunMode propiedad en la Propiedades de nivel superior sección delYAMLDefinición del flujo de trabajo.

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

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