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.
- 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 comotrue
, o trabalho não será cancelado. Por exemplo, a condiçãoif: always()
será avaliada como true e o trabalho continuará sendo executado. Quando não há nenhuma condição, isso é equivalente à condiçãoif: success()
, que só é executada se a etapa anterior foi concluída com sucesso. - 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.
- 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 comotrue
, a etapa continuará sendo executada. Você pode usar a expressãocancelled
para aplicar uma verificação de statuscancelled()
. Para saber mais, confira Avaliar expressões em fluxos de trabalho e ações. - 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 ebash/cmd/pwd
quandorun
é 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. - 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.