Compartilhamento de computação entre ações - Amazon CodeCatalyst

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Compartilhamento de computação entre ações

Por padrão, as ações em um fluxo de trabalho são executadas em instâncias separadas em uma frota. Esse comportamento fornece ações com isolamento e previsibilidade sobre o estado das entradas. O comportamento padrão requer configuração explícita para compartilhar contexto, como arquivos e variáveis, entre as ações.

O compartilhamento de computação é um recurso que permite executar todas as ações em um fluxo de trabalho na mesma instância. Usar o compartilhamento de computação pode proporcionar tempos de execução de fluxo de trabalho mais rápidos, pois menos tempo é gasto no provisionamento de instâncias. Você também pode compartilhar arquivos (artefatos) entre ações sem configuração adicional do fluxo de trabalho.

Quando um fluxo de trabalho é executado usando o compartilhamento de computação, uma instância na frota padrão ou especificada é reservada para a duração de todas as ações nesse fluxo de trabalho. Quando a execução do fluxo de trabalho é concluída, a reserva da instância é liberada.

Executando várias ações em computação compartilhada

Você pode usar o Compute atributo na definição YAML no nível do fluxo de trabalho para especificar as propriedades de compartilhamento de frota e computação das ações. Você também pode configurar propriedades computacionais usando o editor visual em CodeCatalyst. Para especificar uma frota, defina o nome de uma frota existente, defina o tipo de computação como EC2 e ative o compartilhamento de computação.

nota

O compartilhamento de computação só é suportado se o tipo de computação estiver definido como EC2 e não é compatível com o sistema operacional Windows Server 2022. Para obter mais informações sobre frotas de computação, tipos de computação e propriedades, consulte. Configurando as imagens do Docker do ambiente de computação e tempo de execução para um fluxo de trabalho

nota

Se você estiver no nível Gratuito e especificar a Linux.x86-64.2XLarge frota Linux.x86-64.XLarge ou manualmente na definição de fluxo de trabalho YAML, a ação ainda será executada na frota padrão (Linux.x86-64.Large). Para obter mais informações sobre disponibilidade e preços de computação, consulte a tabela com as opções de níveis.

Quando o compartilhamento de computação está ativado, a pasta que contém a fonte do fluxo de trabalho é copiada automaticamente entre as ações. Você não precisa configurar artefatos de saída e referenciá-los como artefatos de entrada em uma definição de fluxo de trabalho (arquivo YAML). Como autor do fluxo de trabalho, você precisa conectar variáveis de ambiente usando entradas e saídas, da mesma forma que faria sem usar o compartilhamento de computação. Se você quiser compartilhar pastas entre ações fora da origem do fluxo de trabalho, considere o armazenamento em cache de arquivos. Para obter mais informações, consulte Compartilhamento de dados entre ações em um fluxo de trabalho usando artefatos e Armazenando arquivos em cache entre execuções de fluxo de trabalho.

O repositório de origem em que seu arquivo de definição de fluxo de trabalho reside é identificado pelo rótulo. WorkflowSource Ao usar o compartilhamento de computação, a fonte do fluxo de trabalho é baixada na primeira ação que faz referência a ela e disponibilizada automaticamente para uso em ações subsequentes na execução do fluxo de trabalho. Todas as alterações feitas na pasta que contém a fonte do fluxo de trabalho por meio de uma ação, como adicionar, modificar ou remover arquivos, também são visíveis nas ações subsequentes do fluxo de trabalho. Você pode referenciar arquivos que residem na pasta de origem do fluxo de trabalho em qualquer uma das ações do fluxo de trabalho, da mesma forma que você pode, sem usar o compartilhamento de computação. Para ter mais informações, consulte Fazendo referência a arquivos em um repositório de origem.

nota

Os fluxos de trabalho de compartilhamento de computação precisam especificar uma sequência estrita de ações, para que ações paralelas não possam ser definidas. Embora os artefatos de saída possam ser configurados em qualquer ação na sequência, os artefatos de entrada não são suportados.

Considerações sobre o compartilhamento de computação

Você pode executar fluxos de trabalho com compartilhamento de computação para acelerar a execução do fluxo de trabalho e compartilhar o contexto entre as ações em um fluxo de trabalho que usa a mesma instância. Considere o seguinte para determinar se o uso do compartilhamento de computação é apropriado para seu cenário:

Compartilhamento de computação Sem compartilhamento de computação

Tipo de computação

Amazon EC2

Amazon EC2, AWS Lambda

Provisionamento de instâncias

Ações executadas na mesma instância

As ações são executadas em instâncias separadas

Sistema operacional

Amazon Linux 2

Amazon Linux 2, Windows Server 2022 (somente ação de compilação)

Arquivos de referência

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

Estrutura Workflow

As ações só podem ser executadas sequencialmente

As ações podem ser executadas paralelamente

Acessando dados em todas as ações do fluxo de trabalho

Acesse a fonte de fluxo de trabalho em cache () WorkflowSource

Acesse saídas de artefatos compartilhados (requer configuração adicional)

Ativando o compartilhamento de computação

Use as instruções a seguir para ativar o compartilhamento de computação em um fluxo de trabalho.

Visual
Para ativar o compartilhamento de computação usando o editor visual
  1. Abra o CodeCatalyst console em https://codecatalyst.aws/.

  2. Selecione o projeto.

  3. No painel de navegação, escolha CI/CD e, em seguida, escolha Fluxos de trabalho.

  4. Escolha o nome do seu fluxo de trabalho.

  5. Selecione a opção Editar.

  6. Escolha Visual.

  7. Escolha Propriedades do fluxo de trabalho.

  8. No menu suspenso Tipo de computação, escolha EC2.

  9. (Opcional) No menu suspenso Compute fleet - opcional, escolha uma frota que você deseja usar para executar ações de fluxo de trabalho. Você pode escolher uma frota sob demanda ou criar e escolher uma frota provisionada. Para obter mais informações, consulte Criação de uma frota provisionada e Atribuindo uma frota provisionada ou computação sob demanda a uma ação

  10. Alterne o botão para ativar o compartilhamento de computação e fazer com que as ações no fluxo de trabalho sejam executadas na mesma frota.

  11. (Opcional) Escolha o modo de execução para o fluxo de trabalho. Para ter mais informações, consulte Configurando o comportamento de enfileiramento das execuções.

  12. Escolha Confirmar, insira uma mensagem de confirmação e escolha Confirmar novamente.

YAML
Para ativar o compartilhamento de computação usando o editor YAML
  1. Abra o CodeCatalyst console em https://codecatalyst.aws/.

  2. Selecione o projeto.

  3. No painel de navegação, escolha CI/CD e, em seguida, escolha Fluxos de trabalho.

  4. Escolha o nome do seu fluxo de trabalho.

  5. Selecione a opção Editar.

  6. Escolha YAML.

  7. Ative o compartilhamento de computação configurando o SharedInstance campo para TRUE e Type paraEC2. FleetDefina uma frota de computação que você deseja usar para executar ações de fluxo de trabalho. Você pode escolher uma frota sob demanda ou criar e escolher uma frota provisionada. Para obter mais informações, consulte Criação de uma frota provisionada e Atribuindo uma frota provisionada ou computação sob demanda a uma ação

    Em um fluxo de trabalho YAML, adicione um código semelhante ao seguinte:

    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) Escolha Validar para validar o código YAML do fluxo de trabalho antes de confirmar.

  9. Escolha Confirmar, insira uma mensagem de confirmação e escolha Confirmar novamente.

Exemplos

Exemplo: Amazon S3 Publish

Os exemplos de fluxo de trabalho a seguir mostram como realizar a ação Amazon Amazon S3 Publish de duas maneiras: primeiro usando artefatos de entrada e depois usando o compartilhamento de computação. Com o compartilhamento de computação, os artefatos de entrada não são necessários, pois você pode acessar o cache. WorkflowSource Além disso, o artefato de saída na ação Construir não é mais necessário. A ação S3 Publish está configurada para usar a DependsOn propriedade explícita para manter ações sequenciais; a ação Build deve ser executada com êxito para que a ação S3 Publish seja executada.

  • Sem o compartilhamento de computação, você precisa usar artefatos de entrada e compartilhar as saídas com ações subsequentes:

    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
  • Ao usar o compartilhamento de computação configurando como SharedInstanceTRUE, você pode executar várias ações na mesma instância e compartilhar artefatos especificando uma única fonte de fluxo de trabalho. Os artefatos de entrada não são obrigatórios e não podem ser especificados:

    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