Amazon ya no CodeCatalyst está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cómo migrar desde 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 ejecuciones
De forma predeterminada, en Amazon CodeCatalyst, cuando se ejecutan varios flujos de trabajo al mismo tiempo, CodeCatalyst los pone en 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. Existen varios modos de ejecución:
-
(Predeterminado) Modo de ejecución en cola: los procesos de CodeCatalyst se ejecutan uno por uno
-
Modo de ejecución reemplazado: los procesos de CodeCatalyst se ejecutan uno por uno, y las ejecuciones más recientes sustituyen a las antiguas
-
Modo de ejecución en paralelo: los procesos de CodeCatalyst se ejecutan en paralelo
Para obtener más información acerca de las ejecuciones de flujos de trabajo, consulte Ejecución de un flujo de trabajo.
Temas
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 que están en espera forman una cola.
Las colas se forman en los puntos de acceso 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 1 ejemplifica un flujo de trabajo configurado en el modo de ejecución en cola. Se muestra lo siguiente:
-
Siete ejecuciones recorriendo el flujo de trabajo.
-
Dos colas: una fuera de la entrada al origen de la entrada (Repo:main) y otra fuera de la entrada a la acción BuildTestActionGroup.
-
Dos bloques bloqueados: el origen de entrada (Repo:main) y el BuildTestActionGroup.
Así es como sucederá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 código fuente, saldrá de la fuente de entrada y se unirá a la cola detrás de Run-3c333. A continuación, Run-5e555 entrará en el origen de entrada.
-
Cuando Run-1a111 termine de compilar y realizar las pruebas, saldrá de la acción BuildTestActionGroup y entrará en la acción DeployAction. A continuación, Run-2b222 entrará en la acción BuildTestActionGroup.
Figura 1: un flujo de trabajo configurado en el modo de ejecución en cola.
Utilice el modo de ejecución en cola si:
-
Desea mantener una relación de uno a uno entre las características y las ejecuciones; estas características pueden agruparse cuando se utiliza el modo reemplazado. Por ejemplo, cuando se combina la característica 1 en la confirmación 1, se inicia la ejecución 1, y cuando se combina la característica 2 en la confirmación 2, se inicia la ejecución 2, y así sucesivamente. Si utilizara el modo reemplazado en lugar del modo en cola, sus características (y confirmaciones) se agruparán en la ejecución que reemplazará a las demás.
-
Quiere evitar las condiciones de carrera y los problemas inesperados que puedan producirse al utilizar el modo en 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 clúster de Amazon ECS, la ejecución de Wang podría iniciar las pruebas de integración en el clúster mientras 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. Pongamos otro ejemplo: es posible que tenga un destino que no disponga de un mecanismo de bloqueo, en cuyo caso las dos ejecuciones podrían sobrescribir los cambios de la otra de forma inesperada.
-
Desea limitar la carga de los recursos de computación que CodeCatalyst utiliza para procesar sus ejecuciones. Por ejemplo, si dispone de tres acciones en su flujo de trabajo, puede tener un máximo de tres ejecuciones al mismo tiempo. Imponer un límite al número de ejecuciones que se pueden realizar al mismo tiempo 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 podría tener una acción de compilación que incluya instrucciones para extraer una imagen de Docker Hub. Docker Hub limita el número de solicitudes de extracción
que puede realizar a un número determinado por hora y por cuenta, y si se supera el límite, se produce un bloqueo. Si utiliza 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 ejecuciones, CodeCatalyst descarta la 51.ª ejecución y las siguientes.
Comportamiento de error:
Si una ejecución deja de responder mientras está siendo procesada por una acción, las ejecuciones que se produzcan después permanecerán en la cola hasta que se agote el tiempo de espera de la acción. El tiempo de espera de las acciones se agota cuando ha transcurrido una hora.
Si una ejecución falla dentro de una acción, se permite continuar con la primera ejecución que esté en la cola detrás de esta.
Acerca del modo de ejecución reemplazado
El modo de ejecución reemplazado 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 (sustituye) a la anterior, y esta última se cancela y se marca como reemplazada.
-
Como resultado del comportamiento descrito en la primera viñeta, una cola solo puede incluir una ejecución cuando se utiliza el modo de ejecución reemplazado.
Utilicemos el flujo de trabajo de Figure 1 como guía: si se aplica el modo de ejecución reemplazado a este flujo de trabajo, se produciría lo siguiente:
-
Run-7g777 sustituiría a las otras dos ejecuciones de la cola y sería la única ejecución restante en la Cola n.º 1. Run-6f666 y Run-5e555 se cancelarían.
-
Run-3c333 reemplazaría a Run-2b222 y sería la única ejecución restante en la Cola n.º 2. Run-2b222 se cancelaría.
Utilice el modo de ejecución reemplazado si desea:
-
un mejor rendimiento que con el modo en cola;
-
menos solicitudes incluso 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 en paralelo
En el modo de ejecución en paralelo, las ejecuciones son independientes entre sí y no tienen que esperar a que se completen las demás para iniciarse. No hay colas y el rendimiento de las ejecuciones solo está limitado por la rapidez con la que se puedan completar las acciones del flujo de trabajo.
Utilice el modo de ejecución en paralelo en entornos de desarrollo en los que cada usuario tenga su propia ramificación de características y se implemente en destinos que no compartan otros usuarios.
importante
Si tiene un destino compartido en el que puedan realizar implementaciones varios usuarios, como una función de Lambda en un entorno de producción, no utilice el modo en 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 ejecuciones en paralelo: 1000 por espacio de CodeCatalyst
Configuración del modo de ejecución
Puede configurar el modo de ejecución en cola, reemplazado o en paralelo. El valor predeterminado es ejecución en cola.
Al cambiar el modo de ejecución del modo en cola o reemplazado al modo en 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 del modo en paralelo al modo en cola o reemplazado, CodeCatalyst permite que se completen todas las ejecuciones en paralelo que se estén ejecutando actualmente. Todas las ejecuciones que se inicien después de cambiar el modo de ejecución al modo en cola o reemplazado utilizarán el nuevo modo.