Configurando o comportamento de enfileiramento das execuçõ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á.

Configurando o comportamento de enfileiramento das execuções

Por padrão, na Amazon CodeCatalyst, quando várias execuções de fluxo de trabalho ocorrem ao mesmo tempo, elas são colocadas em CodeCatalyst fila e as processam uma a uma, na ordem em que foram iniciadas. Você pode alterar esse comportamento padrão especificando um modo de execução. Existem alguns modos de execução:

  • (Padrão) Modo de execução em fila — CodeCatalyst os processos são executados um por um

  • Modo de execução substituído — CodeCatalyst os processos são executados um por um, com as execuções mais recentes ultrapassando as mais antigas

  • Modo de execução paralela — CodeCatalyst os processos são executados em paralelo

Para obter mais informações sobre execuções de fluxo de trabalho, consulteExecutar um fluxo de trabalho.

Sobre o modo de execução em fila

No modo de execução em fila, as execuções ocorrem em série, com as execuções em espera formando uma fila.

As filas se formam nos pontos de entrada para ações e grupos de ações, para que você possa ter várias filas no mesmo fluxo de trabalho (consulteFigure 1). Quando uma execução em fila entra em uma ação, a ação é bloqueada e nenhuma outra execução pode entrar. Quando a execução termina e sai da ação, a ação fica desbloqueada e pronta para a próxima execução.

Figure 1ilustra um fluxo de trabalho configurado no modo de execução em fila. Mostra:

  • Sete execuções percorrendo o fluxo de trabalho.

  • Duas filas: uma fora da entrada da fonte de entrada (repo:main) e outra fora da entrada da ação. BuildTestActionGroup

  • Dois blocos bloqueados: a fonte de entrada (repo:main) e a. BuildTestActionGroup

Veja como as coisas acontecerão à medida que o fluxo de trabalho for executado e finalizado o processamento:

  • Quando o Run-4d444 terminar de clonar o repositório de origem, ele sairá da fonte de entrada e entrará na fila atrás do Run-3c333. Em seguida, o Run-5e555 entrará na fonte de entrada.

  • Quando o RUN-1A111 terminar de construir e testar, ele sairá da ação e entrará na BuildTestActionGroupação. DeployAction Em seguida, o Run-2b222 entrará na ação. BuildTestActionGroup

Figura 1: Um fluxo de trabalho configurado no “modo de execução em fila”

Um fluxo de trabalho configurado no “modo de execução em fila”

Use o modo de execução em fila se:

  • Você deseja manter uma one-to-one relação entre recursos e execuções — esses recursos podem ser agrupados ao usar o modo substituído. Por exemplo, quando você mescla o recurso 1 na confirmação 1, a execução 1 é iniciada e quando você mescla o recurso 2 na confirmação 2, a execução 2 é iniciada e assim por diante. Se você usar o modo substituído em vez do modo em fila, seus recursos (e confirmações) serão agrupados na execução que substitui os outros.

  • Você quer evitar condições de corrida e problemas inesperados que possam ocorrer ao usar o modo paralelo. Por exemplo, se dois desenvolvedores de software, Wang e Saanvi, iniciarem a execução do fluxo de trabalho aproximadamente ao mesmo tempo para implantar em um ECS cluster da Amazon, a execução de Wang poderá iniciar os testes de integração no cluster, enquanto a execução de Saanvi implanta um novo código de aplicativo no cluster, fazendo com que os testes de Wang falhem ou testem o código errado. Como outro exemplo, você pode ter um destino que não tenha um mecanismo de bloqueio. Nesse caso, as duas execuções podem sobrescrever as alterações uma da outra de maneiras inesperadas.

  • Você quer limitar a carga nos recursos computacionais CodeCatalyst usados para processar suas execuções. Por exemplo, se você tiver três ações em seu fluxo de trabalho, poderá ter no máximo três execuções ocorrendo ao mesmo tempo. A imposição de um limite no número de execuções que podem ocorrer ao mesmo tempo torna a taxa de transferência de execução mais previsível.

  • Você deseja restringir o número de solicitações feitas a serviços de terceiros pelo fluxo de trabalho. Por exemplo, seu fluxo de trabalho pode ter uma ação de criação que inclua instruções para extrair uma imagem do Docker Hub. O Docker Hub limita o número de pull requests que você pode fazer a um determinado número por hora por conta, e você será bloqueado se ultrapassar o limite. Usar o modo de execução em fila para diminuir a taxa de transferência de execução terá o efeito de gerar menos solicitações para o Docker Hub por hora, limitando assim o potencial de bloqueios e resultantes falhas de construção e execução.

Tamanho máximo da fila: 50

Notas sobre o tamanho máximo da fila:

  • O tamanho máximo da fila se refere ao número máximo de execuções permitidas em todas as filas no fluxo de trabalho.

  • Se uma fila tiver mais de 50 execuções, a 51ª e CodeCatalyst as subsequentes serão descartadas.

Comportamento de falha:

Se uma execução deixar de responder enquanto estiver sendo processada por uma ação, as execuções por trás dela serão mantidas na fila até que a ação expire. As ações expiram após uma hora.

Se uma execução falhar dentro de uma ação, a primeira execução em fila após ela poderá continuar.

Sobre o modo de execução substituído

O modo de execução substituído é o mesmo que o modo de execução em fila, exceto que:

  • Se uma execução na fila alcançar outra execução na fila, a execução posterior substituirá (substituirá) a execução anterior, e a execução anterior será cancelada e marcada como 'substituída'.

  • Como resultado do comportamento descrito no primeiro bullet, uma fila só pode incluir uma execução quando o modo de execução substituído é usado.

Usando o fluxo de trabalho Figure 1 como guia, a aplicação do modo de execução substituído a esse fluxo de trabalho resultaria no seguinte:

  • O Run-7G777 substituiria as outras duas execuções em sua fila e seria a única execução restante na Fila #1. A execução 6f666 e a execução -5e555 seriam canceladas.

  • O Run-3C333 substituiria o Run-2B222 e seria a única execução restante na Fila #2. O run-2b222 seria cancelado.

Use o modo de execução substituído se quiser:

  • melhor taxa de transferência do que com o modo em fila

  • ainda menos solicitações em serviços de terceiros do que no modo em fila; isso é vantajoso se o serviço de terceiros tiver limites de taxa, como o Docker Hub

Sobre o modo de execução paralela

No modo de execução paralela, as corridas são independentes umas das outras e não espere que as outras sejam concluídas antes de começar. Não há filas e a taxa de transferência da execução é limitada apenas pela rapidez com que as ações dentro do fluxo de trabalho são concluídas.

Use o modo de execução paralela em ambientes de desenvolvimento em que cada usuário tem sua própria ramificação de recursos e implanta em destinos que não são compartilhados por outros usuários.

Importante

Se você tiver um destino compartilhado no qual vários usuários possam implantar, como uma função Lambda em um ambiente de produção, não use o modo paralelo, pois podem ocorrer condições de corrida. Uma condição de corrida ocorre quando execuções paralelas de fluxo de trabalho tentam alterar um recurso compartilhado ao mesmo tempo, levando a resultados imprevisíveis.

Número máximo de ensaios paralelos: 1000 por CodeCatalyst espaço

Configurando o modo de execução

Você pode definir o modo de execução como enfileirado, substituído ou paralelo. O padrão é em fila.

Quando você altera o modo de execução de enfileirado ou substituído para paralelo CodeCatalyst , cancela as execuções que estão na fila e permite que as execuções que estão sendo processadas atualmente por uma ação sejam concluídas antes de cancelá-las.

Quando você altera o modo de execução de paralelo para enfileirado ou substituído, permite que CodeCatalyst todas as execuções paralelas em execução no momento sejam concluídas. Todas as execuções que você iniciar após alterar o modo de execução para enfileirado ou substituído usam o novo modo.

Visual
Para alterar o modo de execuçã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. Você pode filtrar pelo nome do repositório ou ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou status do fluxo de trabalho.

  5. Selecione a opção Editar.

  6. No canto superior direito, escolha Propriedades do fluxo de trabalho.

  7. Expanda Avançado e, em Modo de execução, escolha uma das seguintes opções:

    1. Em fila — consulte Sobre o modo de execução em fila

    2. Substituído — consulte Sobre o modo de execução substituído

    3. Paralelo — veja Sobre o modo de execução paralela

  8. (Opcional) Escolha Validar para validar o YAML código do fluxo de trabalho antes de confirmar.

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

YAML
Para alterar o modo de execução usando o YAML editor
  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. Você pode filtrar pelo nome do repositório ou ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou status do fluxo de trabalho.

  5. Selecione a opção Editar.

  6. Escolha YAML.

  7. Adicione a RunMode propriedade, assim:

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

    Para obter mais informações, consulte a descrição da RunMode propriedade na Propriedades de nível superior seção doYAMLDefinição de fluxo de trabalho.

  8. (Opcional) Escolha Validar para validar o YAML código do fluxo de trabalho antes de confirmar.

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