Actions: Logs und Artefakte
forge run greift auf die Forgejo-Actions-API zu. Ein Repository wählst du mit -R OWNER/REPO; ohne Flag nutzt forge das aktuelle Git-Remote. Den Überblick über Workflows und Runs findest du unter Actions.
Verfügbarkeit nach Forgejo-Version
| Funktion | Forgejo |
|---|---|
| Jobliste, Logs als Text mit Versuchsauswahl und Run-Logs als ZIP | 16 oder neuer |
| Artefakte auflisten, anzeigen, herunterladen und löschen | 16 oder neuer |
| Abgeschlossenen Run löschen | 16 oder neuer |
| Einzelnen Job mit Schritten anzeigen | 17 oder neuer |
| Run oder abgeschlossenen Job erneut starten | 17 oder neuer |
| Logs nach Schritt oder Text filtern; NDJSON | 17 oder neuer |
Fehlt ein Endpunkt auf dem Server, meldet forge dessen API-Fehler. Verwende die Filter nur mit einer unterstützten Serverversion. Die Version der Instanz prüfst du mit forge api version.
Jobs untersuchen
forge run list -R OWNER/REPO
forge run view 42 -R OWNER/REPO
forge run jobs 42 -R OWNER/REPO
forge run job 123 -R OWNER/REPO
run jobs verwendet die Run-ID; run job verwendet die Job-ID aus der Jobliste. Die Detailantwort eines Jobs enthält seine Schritte. Nutze deren number für --step: Schritt 0 bezeichnet „Set up job“; die folgenden Nummern stammen aus der Serverantwort.
Logs lesen und speichern
# Klartext des letzten Job-Versuchs auf STDOUT
forge run logs --job 123 -R OWNER/REPO
# Nur Schritt 2 aus Versuch 1, mit Textfilter
forge run logs --job 123 --step 2 --attempt 1 --filter "error" --ignore-case -R OWNER/REPO
# Ein JSON-Objekt pro Logzeile, unverändert vom Server
forge run logs --job 123 --format ndjson -R OWNER/REPO
# Job-Log in eine Datei schreiben
forge run logs --job 123 --output test.log -R OWNER/REPO
# Logs aller Jobs eines Runs als ZIP speichern
forge run logs 42 --output run-42-logs.zip -R OWNER/REPO
--filter sucht eine einfache Teilzeichenfolge, keinen regulären Ausdruck. --ignore-case ergänzt den Filter um Groß-/Kleinschreibungsunabhängigkeit. --attempt wählt ab Forgejo 16 einen Job-Versuch ab 1; ohne Flag liefert der Server den neuesten Versuch. --format erlaubt text (Standard) oder ndjson mit den Feldern time und content.
Für Run-Logs ist --output Pflicht, da die Antwort ein ZIP-Archiv ist. --output - gibt die Rohdaten auf STDOUT aus, etwa für eine Pipe. Job-Filter stehen nur zusammen mit --job zur Verfügung. Run-ID und --job sind alternative Ziele.
Downloads überschreiben keine vorhandenen Dateien. Bei fehlgeschlagenen Downloads wird eine neu angelegte Datei entfernt. Logausgabe und Archive sind Rohdaten; die globalen JSON-/jq-/Template-Flags dienen der strukturierten Ausgabe anderer Befehle.
Artefakte verwalten
# Eine Seite aller Repository-Artefakte
forge run artifact list -R OWNER/REPO
# Artefakte eines Runs; optional nach Name filtern
forge run artifact list 42 --name test-results --page 1 --limit 30 -R OWNER/REPO
forge run artifact view 456 -R OWNER/REPO
forge run artifact download 456 --output test-results.zip -R OWNER/REPO
forge run artifact delete 456 --confirm -R OWNER/REPO
Die optionale Zahl bei artifact list ist die Run-ID. view, download und delete erwarten eine Artefakt-ID aus der Liste. --page beginnt bei 1; --limit bestimmt die Seitengröße. --name filtert den Artefaktnamen auf dem Server.
Artefakte werden als ZIP heruntergeladen; --output ist Pflicht. Mit --output - kannst du das Archiv auf STDOUT weiterreichen. Metadatenbefehle unterstützen --json, --jq und --template, zum Beispiel:
forge run artifact list 42 -R OWNER/REPO --jq 'map(.name)'
Neustart und Aufräumen
forge run rerun 42 -R OWNER/REPO
forge run rerun --job 123 -R OWNER/REPO
forge run delete 42 --confirm -R OWNER/REPO
Ein Run muss vor dem Neustart abgeschlossen sein. Beim gezielten Job-Neustart startet Forgejo auch abhängige Jobs erneut; der ausgewählte Job muss bereits abgeschlossen sein. Run-ID und --job dürfen nicht gemeinsam angegeben werden.
run delete löscht einen abgeschlossenen Run einschließlich seiner Logs und Artefakte. Der Server verlangt dafür entsprechende Repository-Rechte. Löschbefehle führen die Änderung nur mit --confirm aus.