Como funcionam as execuções de pipeline - AWS CodePipeline

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á.

Como funcionam as execuções de pipeline

Esta seção fornece uma visão geral da forma como CodePipeline processa um conjunto de alterações. CodePipelinerastreia cada execução de pipeline que começa quando um pipeline é iniciado manualmente ou uma alteração é feita no código-fonte. CodePipelineusa os seguintes modos de execução para lidar com a forma como cada execução progride no pipeline.

  • Modo SUBSTITUÍDO: Uma execução mais recente pode ultrapassar uma mais antiga. Esse é o padrão.

  • Modo EM FILA: as execuções são processadas uma a uma na ordem em que estão na fila. Isso requer o tipo de pipeline V2.

  • Modo PARALELO: no modo PARALELO, as execuções são executadas simultaneamente e independentemente umas das outras. As execuções não esperam que outras corridas sejam concluídas antes de começar ou terminar. Isso requer o tipo de pipeline V2.

Como as execuções de pipeline são iniciadas

Você pode iniciar uma execução ao alterar seu código-fonte ou iniciar manualmente o pipeline. Você também pode acionar uma execução por meio de uma regra da Amazon CloudWatch Events que você agenda. Por exemplo, quando uma alteração no código-fonte é enviada para um repositório configurado como a ação de origem do pipeline, o pipeline detecta a alteração e inicia uma execução.

nota

Se um pipeline tiver várias ações de origem, todas elas serão executadas novamente, mesmo que uma alteração seja detectada para apenas uma ação de origem.

Como as execuções de pipeline são interrompidas

Para usar o console a fim de interromper a execução de um pipeline, você pode selecionar Stop execution (Interromper execução) na página de visualização do pipeline, na página do histórico da execução ou na página do histórico detalhado. Para usar a CLI a fim de interromper a execução de um pipeline, use o comando stop-pipeline-execution. Para ter mais informações, consulte Interromper a execução de um pipeline no CodePipeline.

Há duas maneiras de interromper a execução de um pipeline:

  • Interromper e aguardar: todas as execuções de ação em andamento podem ser concluídas e as ações subsequentes não são iniciadas. A execução do pipeline não continua para estágios subsequentes. Não é possível usar essa opção em uma execução que já está em um estado Stopping.

  • Interromper e abandonar: todas as execuções de ação em andamento são abandonadas e não são concluídas, e as ações subsequentes não são iniciadas. A execução do pipeline não continua para estágios subsequentes. É possível usar essa opção em uma execução que já está em um estado Stopping.

    nota

    Essa opção pode levar a tarefas com falha ou a tarefas fora de sequência.

Cada opção resulta em uma sequência diferente de fases de execução de pipeline e ação, como se segue.

Opção 1: interromper e aguardar

Quando você optar por interromper e aguardar, a execução selecionada continuará até que as ações em andamento sejam concluídas. Por exemplo, a execução do pipeline a seguir foi interrompida enquanto a ação de compilação estava em andamento.

  1. Na visualização do pipeline, o banner da mensagem de êxito é exibido e a ação de compilação continua até que seja concluída. O status de execução do pipeline é Stopping (Interrompendo).

    Na visualização do histórico, o status das ações em andamento, como a ação de compilação, é In progress (Em andamento) até que a ação de compilação seja concluída. Enquanto as ações estão em andamento, o status de execução do pipeline é Stopping (Interrompendo).

  2. A execução é interrompida quando o processo de interrupção é concluído. Se a ação de compilação for concluída com êxito, seu status será Succeeded (Bem-sucedido), e a execução do pipeline mostrará um status Stopped (Interrompido). As ações subsequentes não são iniciadas. O botão Retry (Repetir) está habilitado.

    Na visualização do histórico, o status da execução é Stopped (Interrompido) após a conclusão da ação em andamento.

Opção 2: interromper e abandonar

Quando você escolhe interromper e abandonar, a execução selecionada não aguarda a conclusão das ações em andamento. As ações são abandonadas. Por exemplo, a execução do pipeline a seguir foi interrompida e abandonada enquanto a ação de compilação estava em andamento.

  1. Na visualização de pipeline, a mensagem de banner de sucesso é exibida, a ação de compilação mostra um status de In progress (Em andamento) e a execução do pipeline mostra um status Stopping (Interrompendo).

  2. Depois que a execução do pipeline for interrompida, a ação de compilação mostrará um status Abandoned (Abandonado), e a execução do pipeline mostra um status de Stopped (Interrompido). As ações subsequentes não são iniciadas. O botão Retry (Repetir) está habilitado.

  3. Na visualização do histórico, o status da execução é Stopped (Interrompido).

Casos de uso para interromper a execução de um pipeline

Recomendamos que você use a opção de interromper e aguardar para interromper a execução de um pipeline. Essa opção é mais segura porque evita possíveis falhas ou out-of-sequence tarefas em seu pipeline. Quando uma ação é abandonada CodePipeline, o provedor da ação continua com todas as tarefas relacionadas à ação. No caso de uma ação do AWS CloudFormation, a ação de implantação no pipeline é abandonada, mas a atualização da pilha pode continuar e resultar em uma atualização com falha.

Como exemplo de ações abandonadas que podem resultar em out-of-sequence tarefas, se você estiver implantando um arquivo grande (1 GB) por meio de uma ação de implantação do S3 e optar por interromper e abandonar a ação enquanto a implantação já estiver em andamento, a ação será abandonada CodePipeline, mas continuará no Amazon S3. O Amazon S3 não encontra nenhuma instrução para cancelar o upload. Depois, se você iniciar uma nova execução de pipeline com um arquivo muito pequeno, agora haverá duas implantações em andamento. Como o tamanho do arquivo da nova execução é pequeno, a nova implantação é concluída enquanto ainda está sendo feito upload da implantação antiga. Quando a implantação antiga for concluída, o novo arquivo será substituído pelo arquivo antigo.

Você pode querer usar a opção interromper e abandonar no caso em que você tem uma ação personalizada. Por exemplo, é possível abandonar uma ação personalizada com um trabalho que não precise terminar antes de iniciar uma nova execução para uma correção de erro.

Como as execuções são processadas no modo SUBSTITUÍDO

O modo padrão para processar execuções é o modo SUBSTITUÍDO. Uma execução consiste em um conjunto de alterações capturadas e processadas pela execução. Os pipelines podem processar várias execuções ao mesmo tempo. Cada execução é executada por meio do pipeline separadamente. O pipeline processa cada execução na ordem e pode substituir uma execução anterior por uma posterior. As regras a seguir são usadas para processar execuções em um pipeline para o modo SUPERSEDED.

Regra 1: os estágios são bloqueados quando uma execução está sendo processada

Como cada estágio pode processar apenas uma execução por vez, o estágio é bloqueado enquanto está em andamento. Quando a execução conclui um estágio, uma transição é feita para o próximo estágio no pipeline.

Antes: Stage 1 is locked as Execution 1 enters. Depois: Stage 2 is locked as Execution 1 enters.

Regra 2: as execuções subsequentes aguardam o desbloqueio do estágio

Enquanto um estágio está bloqueado, as execuções em espera são mantidas na frente do estágio bloqueado. Antes de um estágio ser considerado com concluído, todas as ações configuradas para um estágio devem ser concluídas com êxito. Uma falha libera o bloqueio no estágio. Quando uma execução é interrompida, a execução não continua em um estágio e o estágio é desbloqueado.

nota

Antes de interromper uma execução, recomendamos que você desative a transição na frente do estágio. Dessa forma, quando o estágio é desbloqueado devido à execução interrompida, o estágio não aceita uma execução de pipeline subsequente.

Antes: Stage 2 is locked as Execution 1 enters. Depois: Execution 2 exits Stage 1 and waits between stages.

Regra 3: as execuções em espera são substituídas por execuções mais recentes

As execuções só são substituídas entre estágios. Um estágio bloqueado mantém uma execução na frente do estágio em espera pela conclusão do estágio. Uma execução mais recente ultrapassa uma execução em espera e continua para o próximo estágio assim que o estágio é desbloqueado. A execução substituída não continua. Neste exemplo, a Execução 2 foi substituída pela Execução 3 ao aguardar o estágio bloqueado. A Execução 3 entra no estágio seguinte.

Antes: a execução 2 espera entre os estágios enquanto a execução 3 entra no estágio 1. Após: a execução 3 sai do estágio 1. A execução 2 é substituída pela execução 3.

Como as execuções são processadas no modo EM FILA

Para pipelines no modo QUEUED, os estágios são bloqueados quando uma execução está sendo processada; no entanto, as execuções em espera não ultrapassam as que já foram iniciadas.

As execuções em espera se reúnem nos pontos de entrada dos estágios bloqueados na ordem em que chegam ao palco, formando uma fila de execuções em espera. Com o modo QUEUED, você pode ter várias filas no mesmo pipeline. Quando uma execução em fila entra em um estágio, o estágio é bloqueado e nenhuma outra execução pode entrar. Esse comportamento permanece o mesmo do modo SUBSTITUÍDO. Quando a execução termina o estágio, o estágio fica desbloqueado e pronto para a próxima execução.

O diagrama a seguir mostra como os estágios de um pipeline no modo ENFILEIRADO processam as execuções. Por exemplo, enquanto o estágio de origem processa a execução 5, as execuções de 6 e 7 formam a fila #1 e aguardam no ponto de entrada do estágio. A próxima execução na fila será processada após o desbloqueio do estágio.


                    Um diagrama mostrando as execuções em um pipeline definido para o modo QUEUED.

Para obter mais informações sobre cotas com modos de execução, consulteCotas no AWS CodePipeline.

Como as execuções são processadas no modo PARALELO

Para pipelines no modo PARALLEL, as execuções são independentes umas das outras e não espere que outras execuções sejam concluídas antes de começar. Não há filas. Para visualizar as execuções paralelas no pipeline, use a visualização do histórico de execução.

Use o modo PARALELO em ambientes de desenvolvimento em que cada recurso tem sua própria ramificação de recursos e é implantado em destinos que não são compartilhados por outros usuários.

Para obter mais informações sobre cotas com modos de execução, consulteCotas no AWS CodePipeline.

Gerenciar o fluxo do pipeline

O fluxo de execuções do pipeline pode ser controlado por:

  • Uma transição que controla o fluxo de execuções no estágio. As transições podem ser habilitadas ou desabilitadas. Quando uma transição é desabilitada, as execuções do pipeline não podem entrar no estágio. A execução do pipeline que espera para entrar em um estágio em que a transição está desativada é chamada de execução de entrada. Depois que você habilitar a transição, uma execução de entrada passará para o estágio e o bloqueará.

    De forma semelhante às execuções que aguardam um estágio bloqueado, quando uma transição é desabilitada, a execução que está aguardando para entrar no estágio ainda pode ser substituída por uma nova execução. Quando uma transição desabilitada é habilitada novamente, a execução mais recente, incluindo as que substituíram execuções mais antigas enquanto a transição estava desabilitada, entra no estágio.

  • Uma ação de aprovação que impede que um pipeline faça a transição para a próxima ação até que uma permissão seja concedida (por exemplo, por meio da aprovação manual de um entidade autorizada). Você pode usar uma ação de aprovação quando quiser controlar o momento em que um pipeline faz a transição para um estágio final de Production (Produção), por exemplo.

    nota

    Um estágio com uma ação de aprovação é bloqueado até que a ação de aprovação seja aprovada ou rejeitada ou tenha expirado. Uma ação de aprovação expirada é processada da mesma maneira que uma ação com falha.

  • Uma falha, quando uma ação em um estágio não é concluída com êxito. A revisão não faz a transição para a próxima ação no estágio ou para o próximo estágio no pipeline. O seguinte pode ocorrer:

    • Você retome manualmente o estágio que contém as ações com falha. Isso retoma a execução (ela tenta novamente as ações com falha e, se elas forem bem-sucedidas, continua no estágio/pipeline).

    • Outra execução entra no estágio com falha e substitui a execução com falha. Nesse ponto, a execução com falha não pode ser repetida.

Ao decidir como uma alteração no código deve fluir pelo pipeline, é melhor agrupar as ações relacionadas dentro de um estágio para que, quando o estágio estiver bloqueado, todas as ações processem a mesma execução. É possível criar um estágio para cada ambiente de aplicação, Região da AWS ou zona de disponibilidade, etc. Um pipeline com muitos estágios (ou seja, muito granular) pode permitir muitas alterações simultâneas, enquanto um pipeline com muitas ações em um estágio grande (muito grande) podem demorar muito para liberar uma alteração.

Como um exemplo, uma ação de teste após uma ação de implantação no mesmo estágio certamente testará a mesma alteração que foi implantada. Neste exemplo, uma alteração é implantada em um ambiente de teste, depois, testada, e, então, a alteração mais recente no ambiente de teste é implantada em um ambiente de produção. No exemplo recomendado, o ambiente de teste e o ambiente de produção são estágios separados.

À esquerda: ações relacionadas de teste, implantação e aprovação agrupadas (recomendado). À direita: ações relacionadas em estágios separados (não recomendado).

Como funcionam as execuções de entrada

Execução de entrada é uma execução que aguarda a disponibilização de um estágio, uma transição ou uma ação indisponível antes de avançar. O próximo estágio, transição ou ação pode não estar disponível porque:

  • Outra execução já entrou no próximo estágio e a bloqueou.

  • A transição para entrar no próximo estágio está desabilitada.

Será possível desabilitar uma transição para manter uma execução de entrada se quiser determinar se uma execução atual tem tempo para ser concluída nos estágios subsequentes ou interromper todas as ações em um ponto específico. Para determinar se você tem uma execução de entrada, é possível visualizar o pipeline no console ou ver a saída do comando get-pipeline-state.

As execuções de entrada funcionam com as seguintes considerações:

  • Assim que a ação, a transição ou o estágio bloqueado se tornam disponíveis, a execução de entrada em andamento entra no estágio e prossegue pelo pipeline.

  • Enquanto a execução de entrada está aguardando, ela pode ser interrompida manualmente. Uma execução de entrada pode ter o status InProgress, Stopped ou Failed.

  • Quando uma execução de entrada é interrompida ou falha, não é possível repeti-la porque não há nenhuma ação com falha para repetir. Quando uma execução de entrada é interrompida e a transição está habilitada, a execução de entrada interrompida não prossegue pelo estágio.

É possível visualizar ou interromper uma execução de entrada.