Skip to main content

Referência de cancelamento de fluxo de trabalho

Veja informações sobre as etapas que o GitHub segue para cancelar uma execução de fluxo de trabalho.

Ao cancelar uma execução de fluxo de trabalho, você pode 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 saber mais, 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ções 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 período de tempo limite de cancelamento de 5 minutos, o servidor encerra à força todos os trabalhos e etapas que ainda estão em execução.