Skip to main content

Référence d’annulation du flux de travail

Trouvez des informations sur les étapes GitHub nécessaires pour annuler l’exécution d’un flux de travail.

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.

  1. 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 valeur true, le travail n’est pas annulé. Par exemple, la condition if: always() prend la valeur true et le travail continue à s’exécuter. En l’absence de condition, c’est l’équivalent de la condition if: success(), qui s’exécute uniquement si l’étape précédente s’est terminée avec succès.
  2. 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.
  3. 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 valeur true, l’étape continue à s’exécuter. Vous pouvez utiliser l’expression cancelled pour appliquer une vérification d’état sur cancelled(). Pour plus d’informations, consultez « Évaluer les expressions dans les workflows et les actions ».
  4. 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 et bash/cmd/pwd lors de l’utilisation de run dans une étape). Si le processus ne se termine pas dans les 7500 ms, l’exécuteur envoie SIGTERM/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.
  5. 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.