Zum Inhalt springen

Pipeline-Läufe überwachen

Diese Seite gilt für alles, nachdem ein Lauf gestartet ist: ihn finden, lesen, was jeder Schritt getan hat, und einen fehlgeschlagenen Lauf wieder in Gang bringen. Zum Starten siehe Eine Pipeline manuell ausführen.

  1. Klicke in der Seitenleiste des Arbeitsbereichs auf Pipelines. Der Bildschirm ist die Warteschlange der Läufe dieses Arbeitsbereichs — jeder Lauf, der neueste zuerst.
  2. Filtere über die linke Leiste. Es gibt genau drei Filter, jeder mit einer mitlaufenden Anzahl: Alle, Running, Failed.
  3. Geh die Tabelle mit ↑/↓ (oder j/k) durch und drücke Enter, um den fokussierten Lauf zu öffnen. Ein Klick auf die Zeile tut dasselbe.

Jede Zeile zeigt ein Symbol dafür, wie der Lauf gestartet wurde (Play bei manuell, ein Dateisymbol bei einer Code-Graph-Beobachtung, sonst der automatische Auslöser). Der Tooltip nennt den Auslöser — Manuell, PR veröffentlicht, Dateiänderung und so weiter — und bei einem Beobachtungslauf, welche Dateien sich geändert haben. Danach kommen der Name der Pipeline, ein Status-Badge, die aktive Dauer (oder die Position in der Warteschlange bei einem queued-Lauf) und wie lange dieser Versuch her ist. Die aktive Dauer lässt Pausen zwischen Stopp und Neustart aus. Sie ist nicht die verstrichene Echtzeit.

Einen Filter für abgeschlossene, ausgesetzte oder abgebrochene Läufe gibt es nicht, auch keinen je Vorlage, kein Zeitfenster und keine Verlaufsansicht je Vorlage. Läufe einer Vorlage vergleichst du, indem du die Warteschlange nach ihrem Namen absuchst.

Die Seite eines Laufs hat drei übereinanderliegende Teile.

Die Metaleiste trägt die Startzeit, die aktive Dauer, den Schrittfortschritt („3 von 7 Schritten“), eine Fehlerzusammenfassung, die den gescheiterten Schritt und den Grund nennt, sowie die Aktionen Erneut versuchen und Löschen.

Der Zeit-Wasserfall zeigt einen Balken je Schritt, mit seiner Dauer und — bei Agenten-Schritten — den Kosten in Cent. Ein wiederholter Schritt zeigt nach der Dauer das Suffix ×N. Nur dort siehst du, wie viele Versuche es gab.

Die Graph-Zeichenfläche zeichnet die Vorlage mit dem aktuellen Status jedes Knotens. Ein ausgewählter Knoten öffnet sein Schrittpanel.

Status Bedeutung
Pending Angelegt, noch nicht gestartet
In Warteschlange Aufgenommen, aber zurückgehalten: das Limit für max. parallele Läufe dieser Vorlage ist voll; noch keine Schrittzeilen
Running Wird ausgeführt
Suspended Wartet auf etwas von außen — normal, der Schritt hängt nicht
Completed Erfolgreich beendet
Failed Mit einem Fehler beendet
Cancelled Von einem Nutzer oder vom System gestoppt

Schritte haben diese Status ohne In Warteschlange, plus Skipped für einen Zweig, den ein Router nicht genommen hat (und seine nun unerreichbaren Nachfahren).

Suspended ist der Status, in dem ein Agenten-Schritt die meiste Zeit verbringt: ein losgeschickter Agent oder ein Freigabetor hält den Schritt, bis die Arbeit ankommt. Zwei Sicherungen der Engine lassen den ganzen Lauf scheitern, statt ihn fortzusetzen: ein Schritt, der länger als 24 Stunden suspended war (extras.awaitApproval — der Body orchestration.awaitApproval — ist ausgenommen; human.gate nicht) und ein nicht idempotenter Schritt, der mitten in der Ausführung war, als der Server anhielt.

Wähle einen Knoten auf der Zeichenfläche. Das Schrittpanel zeigt der Reihe nach:

  • einen Hinweis Fehler, wenn der Schritt gescheitert ist, oder einen Hinweis Übersprungen mit dem Grund, wenn er übersprungen wurde.
  • Gestartet, Abgeschlossen und die Dauer.
  • Branch — der Zweigindex, bei parallelen Zweigen.
  • Unterhaltung anzeigen — springt in die Unterhaltung, in der der Schritt gelaufen ist. Pipeline-Unterhaltungen sind in der Seitenleiste ausgeblendet. Das ist der einzige Weg hinein.
  • Eingabe und Ausgabe, als einklappbares JSON.
  • Agent-Aktivität — eine Kachel je Agentenlauf, den der Schritt losgeschickt hat, mit Status, Zusammenfassung, Dauer und Kosten.

Bei einem Agenten-Schritt ist Ausgabe die strukturierte Nutzlast, die der Agent mit submit_output abgegeben hat, sein Fließtext steht dort nicht. Die Reasoning-Spur liegt in Agent-Aktivität und in der Unterhaltung hinter Unterhaltung anzeigen.

Bei einem Bash-Schritt ist Ausgabe der gekürzte stdout, den das Skript bei Exit 0 geschrieben hat. Ein Exit ungleich null lässt den Schritt scheitern, mit dem Ende von stderr als Fehlermeldung.

  1. Lies die Fehlerzusammenfassung in der Metaleiste. Sie nennt den gescheiterten Schritt. Der Hinweis Fehler im Schrittpanel hat die Meldung.
  2. Prüfe die Eingabe des Schritts — ein fehlender oder falsch geschriebener Zustandsschlüssel ist die häufigste Ursache. Ein Prompt-Agenten-Schritt scheitert sofort und nennt die ungelösten Platzhalter. Ein Bash-Schritt setzt sie als leere Zeichenketten ein und läuft trotzdem, was sich meist erst einen Schritt später zeigt.
  3. Bei einem Agenten-Schritt öffne Unterhaltung anzeigen und lies, was der Agent tatsächlich getan hat.
  4. Drücke Erneut versuchen in der Metaleiste. Schritte mit dem Status Completed oder Skipped behalten ihre Ausgaben. Alles andere wird gelöscht und neu ausgeführt, und der Lauf springt zurück auf Running. Die Dauer wird für diesen Versuch neu gezählt.

Ursachen, die du zuerst prüfen solltest:

  • Zeitlimit — der Schritt hat sein Zeitlimit (ms) überschritten. Das Feld rechnet in Millisekunden.
  • Skriptfehler — der Bash-Befehl ist mit einem Exit ungleich null beendet, oder bash liegt nicht auf dem PATH des Server-Hosts.
  • Schema-Validierung — die Nutzlast, die der Agent mit submit_output abgegeben hat, erfüllt das Ausgabeschema des Schritts nicht.
  • Ungelöster Platzhalter — ein {{key}}, den ein Prompt-Agenten-Schritt verwendet hat, wurde vorgelagert nie geschrieben. Der Fehler nennt jeden ungelösten Schlüssel.
  • Nicht registrierter Body — ein Schritt, dessen Body-Schlüssel nicht registriert ist, warnt beim Laden der Vorlage und wird danach einfach nie ausgeführt.

Wähle den laufenden Schritt und drücke in der Kopfzeile des Schritpanels auf Laufenden beenden. Das beendet den Prozess des Schritts, setzt den Schritt auf Failed und lässt damit den ganzen Lauf scheitern — jeder offene Geschwisterzweig wird mit ihm abgeschlossen.

Eine Steuerung, die den ganzen Lauf abbricht, gibt es auf diesem Bildschirm nicht. pipeline.cancel gibt es als RPC-Operation, und die Engine setzt sie um, aber die Pipeline-Oberfläche ruft sie nirgends auf. Laufenden beenden an einem Schritt und Löschen am Lauf sind die einzigen Wege, etwas anzuhalten.

Die Kosten stehen je Schritt: in der rechten Spalte des Wasserfalls und auf jeder Kachel unter Agent-Aktivität. Eine Summe für den Lauf gibt es auf der Detailseite nicht, und in der Warteschlange der Läufe keine Kostenspalte. Die Kosten zweier Läufe vergleichst du, indem du ihre Schritte addierst.