Compartir el cómputo entre las acciones - 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.

Compartir el cómputo entre las acciones

De forma predeterminada, las acciones de un flujo de trabajo se ejecutan en instancias independientes de una flota. Este comportamiento proporciona a las acciones aislamiento y previsibilidad en cuanto al estado de las entradas. El comportamiento predeterminado requiere una configuración explícita para compartir el contexto, como archivos y variables, entre las acciones.

El uso compartido de recursos informáticos es una capacidad que permite ejecutar todas las acciones de un flujo de trabajo en la misma instancia. El uso del cómputo compartido puede proporcionar tiempos de ejecución del flujo de trabajo más rápidos, ya que se dedica menos tiempo a aprovisionar instancias. También puedes compartir archivos (artefactos) entre acciones sin necesidad de configurar el flujo de trabajo adicional.

Cuando un flujo de trabajo se ejecuta mediante el uso compartido de recursos informáticos, se reserva una instancia de la flota predeterminada o especificada durante todas las acciones de ese flujo de trabajo. Cuando se completa la ejecución del flujo de trabajo, se libera la reserva de instancia.

Ejecutar varias acciones en el cómputo compartido

Puedes usar el Compute atributo de la definición YAML en el nivel del flujo de trabajo para especificar las propiedades de las acciones para compartir la flota y el cómputo. También puede configurar las propiedades de procesamiento mediante el editor visual de CodeCatalyst. Para especificar una flota, establece el nombre de una flota existente, establece el tipo de cómputo en EC2 y activa el cómputo compartido.

nota

El uso compartido de recursos solo se admite si el tipo de procesamiento está configurado en EC2 y no es compatible con el sistema operativo Windows Server 2022. Para obtener más información sobre las flotas informáticas, los tipos de cómputo y las propiedades, consulte. Configuración del entorno de procesamiento y tiempo de ejecución: imágenes de Docker para un flujo de trabajo

nota

Si estás en el nivel gratuito y especificas la Linux.x86-64.2XLarge flota Linux.x86-64.XLarge o la flota manualmente en la definición de flujo de trabajo YAML, la acción seguirá ejecutándose en la flota predeterminada ()Linux.x86-64.Large. Para obtener más información sobre la disponibilidad del procesamiento y los precios, consulta la tabla con las opciones de niveles.

Cuando la función de compartir el procesamiento está activada, la carpeta que contiene la fuente del flujo de trabajo se copia automáticamente en todas las acciones. No es necesario configurar los artefactos de salida ni hacer referencia a ellos como artefactos de entrada en una definición de flujo de trabajo (archivo YAML). Como autor de un flujo de trabajo, debe configurar las variables de entorno mediante entradas y salidas, del mismo modo que lo haría sin utilizar el cómputo compartido. Si quieres compartir carpetas entre acciones ajenas a la fuente del flujo de trabajo, considera la posibilidad de almacenar archivos en caché. Para obtener más información, consulte Compartir datos entre acciones de un flujo de trabajo mediante artefactos y Almacenamiento en caché de archivos entre ejecuciones de flujos de trabajo.

El repositorio de origen en el que reside el archivo de definición del flujo de trabajo se identifica mediante la etiquetaWorkflowSource. Al utilizar el procesamiento compartido, la fuente del flujo de trabajo se descarga en la primera acción que hace referencia a ella y queda automáticamente disponible para que la utilicen las siguientes acciones del flujo de trabajo que se ejecute. Cualquier cambio realizado en la carpeta que contiene la fuente del flujo de trabajo mediante una acción, como añadir, modificar o eliminar archivos, también se verá en las acciones subsiguientes del flujo de trabajo. Puedes hacer referencia a los archivos que se encuentran en la carpeta de origen del flujo de trabajo en cualquiera de tus acciones de flujo de trabajo, del mismo modo que lo harías sin utilizar la compartición de recursos informáticos. Para obtener más información, consulte Hacer referencia a archivos en un repositorio de fuentes.

nota

Los flujos de trabajo de cómputo compartido deben especificar una secuencia estricta de acciones, por lo que no se pueden configurar acciones paralelas. Si bien los artefactos de salida se pueden configurar en cualquier acción de la secuencia, no se admiten los artefactos de entrada.

Consideraciones sobre el uso compartido de la computación

Puede ejecutar flujos de trabajo con procesamiento compartido para acelerar las ejecuciones de los flujos de trabajo y compartir el contexto entre las acciones de un flujo de trabajo que utilizan la misma instancia. Ten en cuenta lo siguiente para determinar si el uso del cómputo compartido es adecuado para tu escenario:

Uso compartido de computación Sin compartir el cómputo

Tipo de computación

Amazon EC2

Amazon EC2, AWS Lambda

Aprovisionamiento de instancias

Las acciones se ejecutan en la misma instancia

Las acciones se ejecutan en instancias distintas

Sistema operativo

Amazon Linux 2

Amazon Linux 2, Windows Server 2022 (solo acción de compilación)

Archivos de referencia

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

Estructura de flujo de trabajo

Las acciones solo se pueden ejecutar de forma secuencial

Las acciones pueden ejecutarse en paralelo

Acceder a los datos en todas las acciones del flujo

Acceder a la fuente de flujo de trabajo en caché () WorkflowSource

Acceda a las salidas de artefactos compartidos (requiere una configuración adicional)

Activar el uso compartido del cómputo

Usa las siguientes instrucciones para activar la compartición de cómputo en un flujo de trabajo.

Visual
Para activar el uso compartido del cómputo mediante el editor visual
  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.

  5. Elija Editar.

  6. Elige Visual.

  7. Elija las propiedades del flujo de trabajo.

  8. En el menú desplegable Tipo de cómputo, elija EC2.

  9. (Opcional) En el menú desplegable Flota de cómputo (opcional), selecciona la flota que quieras usar para ejecutar las acciones del flujo de trabajo. Puedes elegir una flota a pedido o crear y elegir una flota aprovisionada. Para obtener más información, consulte Creación de una flota aprovisionada y Asignación de una flota aprovisionada o computación bajo demanda a una acción.

  10. Cambia el botón para activar el uso compartido del cómputo y hacer que las acciones del flujo de trabajo se ejecuten en la misma flota.

  11. (Opcional) Elige el modo de ejecución del flujo de trabajo. Para obtener más información, consulte Configuración del comportamiento de puesta en cola de las corridas.

  12. Seleccione Confirmar, introduzca un mensaje de confirmación y vuelva a seleccionar Confirmar.

YAML
Para activar el uso compartido del cómputo mediante el 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.

  5. Elija Editar.

  6. Elige YAML.

  7. Activa el uso compartido del procesamiento configurando el SharedInstance campo en TRUE y Type enEC2. Configure Fleet la flota de procesamiento que desee usar para ejecutar acciones de flujo de trabajo. Puede elegir una flota a pedido o crear y elegir una flota aprovisionada. Para obtener más información, consulte Creación de una flota aprovisionada y Asignación de una flota aprovisionada o computación bajo demanda a una acción.

    En un flujo de trabajo YAML, agrega un código similar al siguiente:

    Name: MyWorkflow SchemaVersion: "1.0" Compute: # Define compute configuration. Type: EC2 Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet. SharedInstance: true # Turn on compute sharing. Default is False. Actions: BuildFirst: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ... ...
  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

Ejemplo: Amazon S3 Publish

Los siguientes ejemplos de flujo de trabajo muestran cómo realizar la acción de publicación en Amazon S3 de dos maneras: primero mediante artefactos de entrada y, a continuación, mediante el uso compartido de cómputo. Con el cómputo compartido, los artefactos de entrada no son necesarios, ya que se puede acceder a lo almacenado en cachéWorkflowSource. Además, el artefacto de salida de la acción Construir ya no es necesario. La acción de publicación de S3 está configurada para utilizar la DependsOn propiedad explícita para mantener las acciones secuenciales; la acción de creación debe ejecutarse correctamente para que la acción de publicación de S3 se ejecute.

  • Sin compartir el cómputo, es necesario usar artefactos de entrada y compartir los resultados con las siguientes acciones:

    Name: S3PublishUsingInputArtifact SchemaVersion: "1.0" Actions: Build: Identifier: aws/build@v1 Outputs: Artifacts: - Name: ArtifactToPublish Files: [output.zip] Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ./build.sh # Build script that generates output.zip PublishToS3: Identifier: aws/s3-publish@v1 Inputs: Artifacts: - ArtifactToPublish Environment: Connections: - Role: codecatalyst-deployment-role Name: dev-deployment-role Name: dev-connection Configuration: SourcePath: output.zip DestinationBucketName: dev-bucket
  • Si utilizas la compartición de recursos con la configuración SharedInstance enTRUE, puedes ejecutar varias acciones en la misma instancia y compartir artefactos especificando una única fuente de flujo de trabajo. Los artefactos de entrada no son obligatorios y no se pueden especificar:

    Name: S3PublishUsingComputeSharing SchemaVersion: "1.0" Compute: Type: EC2 Fleet: dev-fleet SharedInstance: TRUE Actions: Build: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ./build.sh # Build script that generates output.zip PublishToS3: Identifier: aws/s3-publish@v1 DependsOn: - Build Environment: Connections: - Role: codecatalyst-deployment-role Name: dev-deployment-role Name: dev-connection Configuration: SourcePath: output.zip DestinationBucketName: dev-bucket