Aller au contenu

Surveiller les exécutions de pipeline

Cette page couvre tout ce qui se passe après le démarrage d’une exécution : la retrouver, lire ce qu’a fait chaque étape et remettre en marche une exécution échouée. Pour en lancer une, voir Exécuter un pipeline manuellement.

  1. Cliquez sur Pipelines dans la barre latérale de l’espace de travail. L’écran est la file d’attente des exécutions de l’espace de travail — toutes les exécutions, de la plus récente à la plus ancienne.
  2. Utilisez le rail de gauche pour filtrer. Il existe exactement trois filtres, chacun avec un compteur en direct : Tous, Running, Failed.
  3. Parcourez le tableau avec ↑/↓ (ou j/k) et appuyez sur Entrée pour ouvrir l’exécution sélectionnée. Un clic sur une ligne produit le même effet.

Chaque ligne affiche un glyphe indiquant comment l’exécution a démarré (lecture pour un lancement manuel ; un glyphe de fichier pour une surveillance du graphe de code ; sinon le déclencheur automatique). L’infobulle nomme le déclencheur — Manuel, PR publiée, Modification de fichier, etc. — et, pour une exécution de surveillance, les fichiers modifiés. Viennent ensuite le nom du pipeline, un badge de statut, la durée active (ou la position dans la file d’attente pour une exécution queued) et le temps écoulé depuis le début de cette tentative. La durée active exclut les interruptions d’inactivité entre arrêt et redémarrage : ce n’est donc pas le temps écoulé réel.

Il n’existe pas de filtre pour les exécutions terminées, suspendues ou annulées, pas de filtre par modèle, pas de fenêtre temporelle et pas de vue d’historique des exécutions par modèle. Pour comparer les exécutions d’un même modèle, il faut parcourir la file d’attente à la recherche de son nom.

La page d’une exécution comporte trois parties empilées.

La bande de métadonnées affiche l’heure de début, la durée active, la progression des étapes (« 3 sur 7 étapes »), un résumé de l’échec nommant l’étape qui a échoué et la raison, ainsi que les actions Réessayer et Supprimer.

La chronologie affiche une barre par étape, avec sa durée et — pour les étapes d’agent — son coût en cents. Une étape relancée affiche un suffixe ×N après sa durée ; ce suffixe est le seul endroit où le nombre de tentatives apparaît.

Le canevas du graphe dessine le modèle avec le statut en direct de chaque nœud. Sélectionner un nœud ouvre son panneau d’étape.

Statut Signification
Pending Créée, pas encore démarrée
En file d’attente Admise mais retenue : le plafond de parallélisme maximal de ce modèle est atteint ; aucune ligne d’étape pour l’instant
Running En cours d’exécution
Suspended En attente d’un élément externe — normal, pas bloquée
Completed Terminée avec succès
Failed Terminée par une erreur
Cancelled Arrêtée par un utilisateur ou par le système

Les étapes ont ces statuts, moins En file d’attente, plus Skipped, pour une branche qu’un routeur n’a pas empruntée (et ses descendants désormais inaccessibles).

Suspended est l’état dans lequel une étape d’agent passe la majeure partie de sa vie : un agent lancé ou un portail d’approbation retient l’étape jusqu’à ce que son travail aboutisse. Deux filets de sécurité du moteur font échouer toute l’exécution plutôt que de la reprendre : une étape suspendue depuis plus de 24 heures (une étape dont extras.awaitApproval correspond au corps orchestration.awaitApproval est exemptée ; human.gate ne l’est pas) et une étape non idempotente qui était en cours lorsque le serveur s’est arrêté.

Sélectionnez un nœud sur le canevas. Le panneau d’étape affiche, dans l’ordre :

  • Un encadré Erreur lorsque l’étape a échoué, ou un encadré Ignoré avec la raison lorsqu’elle a été ignorée.
  • Démarré, Terminé et la durée.
  • Branche — l’index de branche, pour les branches parallèles.
  • Voir la conversation — accède à la conversation dans laquelle l’étape s’est exécutée. Les conversations de pipeline sont masquées de la barre latérale : c’est donc le seul moyen d’y entrer.
  • Entrée et Sortie, sous forme de JSON repliable.
  • Activité de l’agent — une tuile par exécution d’agent lancée par l’étape, avec son statut, son résumé, sa durée et son coût.

Pour une étape d’agent, la Sortie est la charge utile structurée que l’agent a soumise avec submit_output, et non son texte. La trace de raisonnement se trouve dans Activité de l’agent et dans la conversation derrière Voir la conversation.

Pour une étape bash, la Sortie est la sortie standard tronquée que le script a écrite en quittant avec le code 0. Un code de sortie non nul fait échouer l’étape, avec la fin de stderr comme message d’erreur.

  1. Lisez le résumé de l’échec sur la bande de métadonnées ; il nomme l’étape en échec. L’encadré Erreur du panneau d’étape contient le message.
  2. Vérifiez l’Entrée de l’étape — une clé d’état manquante ou mal orthographiée est la cause la plus fréquente. Une étape prompt-agent échoue d’emblée et nomme les espaces réservés non résolus ; une étape bash les remplace par des chaînes vides et s’exécute quand même, ce qui ne se voit généralement qu’à l’étape suivante.
  3. Pour une étape d’agent, ouvrez Voir la conversation et lisez ce que l’agent a réellement fait.
  4. Appuyez sur Réessayer sur la bande de métadonnées. Les étapes terminées et ignorées conservent leurs sorties ; tout le reste est supprimé et réexécuté, et l’exécution repasse au statut Running. Le compteur de durée repart pour cette tentative.

Causes fréquentes à vérifier en premier :

  • Délai d’expiration — l’étape a dépassé son Délai d’expiration (ms). Rappel : le champ est en millisecondes.
  • Erreur de script — la commande bash s’est terminée avec un code non nul, ou bash n’est pas dans le PATH de l’hôte du serveur.
  • Validation de schéma — la charge utile submit_output de l’agent ne satisfaisait pas le schéma de sortie de l’étape.
  • Espace réservé non résolu — une clé {{key}} référencée par une étape prompt-agent n’a jamais été écrite en amont. L’erreur nomme chaque clé non résolue.
  • Corps non enregistré — une étape dont la clé de corps n’est pas enregistrée avertit au chargement du modèle, puis ne s’exécute tout simplement jamais.

Sélectionnez l’étape en cours et appuyez sur le bouton Arrêter l’exécution dans l’en-tête du panneau d’étape. Cela tue le processus de l’étape, marque l’étape comme échouée et fait donc échouer toute l’exécution — toutes les branches sœurs ouvertes sont clôturées en même temps.

Il n’existe aucun contrôle d’annulation d’exécution sur cet écran. pipeline.cancel existe comme opération RPC et le moteur l’implémente, mais rien dans l’interface des pipelines ne l’appelle ; Arrêter l’exécution sur une étape, ou Supprimer sur l’exécution, sont les seuls gestes d’arrêt disponibles.

Le coût est indiqué par étape, dans la colonne de droite de la chronologie et sur chaque tuile sous Activité de l’agent. Il n’y a pas de total par exécution sur la page de détail, ni de colonne de coût dans la file d’attente des exécutions : comparer le coût de deux exécutions revient donc à additionner leurs étapes.