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
ifpara 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
ifpara as etapas não concluídas. Se a condição for avaliada comotrue, a etapa continuará sendo executada. Você pode usar a expressãocancelledpara 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-Cpara o processo de entrada da etapa (nodepara ações do JavaScript,dockerpara a ação de contêiner ebash/cmd/pwdquandoruné usado em uma etapa). Se o processo não for encerrado em até 7.500 ms, o executor enviaráSIGTERM/Ctrl-Breakao 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.