Skip to main content

Cancelar um fluxo de trabalho

Você pode cancelar a execução de um fluxo de trabalho em andamento. Ao cancelar a execução de um fluxo de trabalho, o GitHub cancela todos os trabalhos e as etapas que integram esse fluxo de trabalho.

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

É necessário o acesso de gravação ao repositório é para executar essas etapas.

Cancelar a execução do fluxo de trabalho

  1. Em GitHub, acesse a página principal do repositório.

  2. No nome do repositório, clique em Ações.

    Captura de tela das guias do repositório "github/docs". A guia "Ações" está realçada com um contorno laranja.

  3. Na barra lateral esquerda, clique no fluxo de trabalho que deseja ver.

    Captura de tela da barra lateral esquerda da guia "Ações". Um fluxo de trabalho, "CodeQL", é descrito em laranja escuro.

  4. Na lista de execuções do fluxo de trabalho, clique no nome da execução queued ou in progress que deseja cancelar.

  5. No canto superior direito do fluxo de trabalho, clique em Cancelar fluxo de trabalho.

    Captura de tela que mostra o resumo de um fluxo de trabalho que está em execução no momento. O botão "Cancelar fluxo de trabalho" está realçado com um contorno laranja escuro.

Etapas que o GitHub realiza para cancelar uma execução de fluxo de trabalho

Ao cancelar a execução do fluxo de trabalho, você poderá estar executando outro software que utiliza recursos relacionados à execução do fluxo de trabalho. Para ajudar você a liberar recursos relacionados à execução do fluxo de trabalho, pode ser útil entender as etapas que GitHub realiza para cancelar a execução de um fluxo de trabalho.

  1. Para cancelar a execução de fluxo de trabalho, o servidor avalia novamente as condições if para todas as tarefas em execução atualmente. Se a condição for avaliada como true, o trabalho não será cancelado. Por exemplo, a condição if: always() será avaliada como true e o trabalho continuará sendo executado. Quando não há nenhuma condição, isso é equivalente à condição if: success(), que só é executada se a etapa anterior foi concluída com sucesso.
  2. Para trabalhos que devem ser cancelados, o servidor envia uma mensagem de cancelamento para todas as máquinas dos executores com trabalhos que precisam ser cancelados.
  3. Para os trabalhos que continuam sendo executados, o servidor avalia as condições if para as etapas não concluídas. Se a condição for avaliada como true, a etapa continuará sendo executada. Você pode usar a expressão cancelled para aplicar uma verificação de status cancelled(). Para obter mais informações, confira "Avaliar expressões em fluxos de trabalho e ações".
  4. Para etapas que precisam ser canceladas, o computador do executor envia SIGINT/Ctrl-C para o processo de entrada da etapa (node para a ação do JavaScript, docker para a ação de contêiner e bash/cmd/pwd quando run é usado em uma etapa). Se o processo não for encerrado em até 7.500 ms, o executor enviará SIGTERM/Ctrl-Break ao processo e aguardará 2.500 ms para que o processo seja encerrado. Se o processo ainda estiver em execução, o corredor finalizará abruptamente a árvore do processo.
  5. Após o tempo-limite de cancelamento de 5 minutos, o servidor irá forçar o encerramento de todos os trabalhos e etapas que não terminarem de ser executadas ou não concluírem o processo de cancelamento.