Lorsque vous annulez l'exécution d'un flux de travail, il se peut que vous utilisiez d'autres logiciels qui utilisent des ressources liées à l'exécution du flux de travail. Pour vous aider à libérer des ressources liées à l’exécution du workflow, cela peut vous aider à comprendre les étapes que GitHub effectue pour annuler une exécution de workflow.
- Pour annuler l’exécution du workflow, le serveur réévalue les conditions
ifde tous les travaux en cours d’exécution. Si la condition prend la valeurtrue, le travail n’est pas annulé. Par exemple, la conditionif: always()prend la valeur true et le travail continue à s’exécuter. En l’absence de condition, c’est l’équivalent de la conditionif: success(), qui s’exécute uniquement si l’étape précédente s’est terminée avec succès. - Pour les travaux qui doivent être annulés, le serveur envoie un message d’annulation à toutes les machines de l’exécuteur avec les travaux qui doivent être annulés.
- Pour les travaux qui continuent à s’exécuter, le serveur réévalue les conditions des étapes non terminées
if. Si la condition prend la valeurtrue, l’étape continue à s’exécuter. Vous pouvez utiliser l’expressioncancelledpour appliquer une vérification d’état surcancelled(). Pour plus d’informations, consultez « Évaluer les expressions dans les workflows et les actions ». - Pour les étapes qui doivent être annulées, la machine à exécuteurs envoie
SIGINT/Ctrl-Cau processus d'entrée de l'étape (nodepour les actions JavaScript,dockerpour les actions sur les conteneurs, etbash/cmd/pwdlors de l'utilisation derundans une étape). Si le processus ne se termine pas dans les 7500 ms, l’exécuteur envoieSIGTERM/Ctrl-Breakau processus, puis attend 2500 ms que le processus se termine. Si le processus est toujours en cours d’exécution, l’exécuteur tue l’arborescence du processus. - Après la période d’expiration d’annulation de 5 minutes, le serveur met fin de force à tous les travaux et étapes qui sont toujours en cours d’exécution.