1 Actions Logs und Artefakte
frank edited this page 2026-10-29 13:44:44 +01:00

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.

Quellen