Lorsque vous annulez l’exécution d’un flux de travail, vous pouvez exécuter 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
if
de 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’expressioncancelled
pour 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 de l’exécuteur envoie
SIGINT/Ctrl-C
au processus d’entrée de l’étape (node
pour les actions JavaScript,docker
pour les actions de conteneur etbash/cmd/pwd
lors de l’utilisation derun
dans une étape). Si le processus ne se termine pas dans les 7500 ms, l’exécuteur envoieSIGTERM/Ctrl-Break
au 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 le délai d’annulation de 5 minutes, le serveur mettra fin de force à tous les travaux et étapes encore en cours d’exécution.