Skip to main content

Annulation d’un workflow

Vous pouvez annuler une exécution de workflow. Quand vous annulez l’exécution d’un workflow, GitHub annule tous les travaux et toutes les étapes qui font partie de ce workflow.

Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.

L’accès en écriture au dépôt est requis pour effectuer ces étapes.

Annulation d’une exécution de workflow

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépôt, cliquez sur Actions.

    Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.

  3. Dans la barre latérale gauche, cliquez sur le workflow que vous souhaitez afficher.

    Capture d'écran de la barre latérale gauche de l'onglet « Actions », avec un workflow « CodeQL » indiqué en orange foncé.

  4. Dans la liste des exécutions de workflow, cliquez sur le nom de l’exécution queued ou in progress que vous souhaitez annuler.

  5. Dans le coin supérieur droit du workflow, cliquez sur Annuler le workflow.

    Capture d’écran montrant le résumé d’un workflow en cours d’exécution. Le bouton « Annuler le workflow » est mis en évidence avec un encadré orange foncé.

Les étapes que GitHub effectue pour annuler une exécution de workflow

Lors de l’annulation de l’exécution du workflow, vous pouvez exécuter d’autres logiciels qui utilisent des ressources liées à l’exécution du workflow. 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, l’ordinateur de l’exécuteur envoie SIGINT/Ctrl-C au processus d’entrée de l’étape (node pour l’action JavaScript, docker pour l’action 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 la période d’expiration d’annulation de 5 minutes, le serveur force l’arrêt de tous les travaux et étapes qui ne se terminent pas ou ne parviennent pas à terminer le processus d’annulation.