Skip to main content

Verwenden von Workflowausführungsprotokollen

Du kannst Protokolle für jeden Auftrag in einer Workflowausführung anzeigen, durchsuchen und herunterladen.

Auf der Workflow-Lauf-Seite können sie sehen, ob ein Workflow-Lauf ausgeführt wird oder abgeschlossen ist. Sie müssen bei einem GitHub Konto angemeldet sein, um Workflowausführungsinformationen anzuzeigen, einschließlich für öffentliche Repositorys. Weitere Informationen finden Sie unter Zugriffsberechtigungen für GitHub.

Wenn der Lauf abgeschlossen ist, kannst du sehen, ob das Ergebnis erfolgreich, fehlerhaft, abgebrochen oder neutral war. Wenn der Lauf fehlgeschlagen ist, kannst du die Build-Protokolle anzeigen und durchsuchen, um den Fehler zu diagnostizieren und den Workflow erneut auszuführen. Du kannst auch abrechenbare Auftragsausführungsminuten anzeigen oder Protokolle und Buildartefakte herunterladen.

GitHub Actions verwenden Sie die Prüf-API, um Status, Ergebnisse und Protokolle für einen Workflow auszugeben. GitHub erstellt eine neue Prüfsuite für jede Workflowausführung. Die Prüfsuite enthält einen Prüflauf für jeden Auftrag im Workflow, und jeder Auftrag enthält Schritte. GitHub Actions werden als Schritt in einem Workflow ausgeführt. Weitere Informationen zur Überprüfungs-API findest du unter REST-API-Endpunkte für Prüfungen.

Hinweis

Stelle sicher, dass du nur gültige Workflowdateien an dein Repository committest. Wenn .github/workflows eine ungültige Workflowdatei enthält, führt GitHub Actions bei jedem neuen Commit zu einem Fehler.

Protokolle zur Fehlerdiagnose anzeigen

Wenn dein Workflow-Lauf fehlschlägt, kannst du sehen, welcher Schritt den Fehler verursacht hat, und die Build-Protokolle des fehlgeschlagenen Schrittes zur Fehlerbehebung überprüfen. Du siehst, wie lange es gedauert hat, bis jeder Schritt ausgeführt wurde. Du kannst außerdem einen Permalink in eine bestimmte Zeile in der Protokolldatei kopieren, um ihn mit deinem Team zu teilen. Um diese Schritte auszuführen, ist Lesezugriff auf das Repository erforderlich.

Zusätzlich zu den in der Workflow-Datei konfigurierten Schritten fügt GitHub jedem Job zwei zusätzliche Schritte hinzu, um die Ausführung des Jobs einzurichten und abzuschließen. Diese Schritte werden in der Workflowausführung mit den Namen „Auftrag einrichten“ und „Auftrag abschließen“ protokolliert.

Für Jobs, die auf GitHub-gehosteten Runnern ausgeführt werden, erfasst „Job einrichten“ Details des Runner-Images und enthält einen Link zur Liste der vorinstallierten Werkzeuge, die auf der Runner-Maschine vorhanden waren.

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Klicke unter dem Repositorynamen auf Actions.

    Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.

  3. Klicke in der linken Seitenleiste auf den Workflow, den Du sehen willst.

    Screenshot der linken Randleiste der Registerkarte „Aktionen“. Ein Workflow, „CodeQL“, ist dunkelorange umrandet.

  4. Klicke in der Liste der Workflowausführungen auf den Namen der Ausführung, um die Zusammenfassung der Workflowausführung anzuzeigen.

  5. Wähle unter Aufträge oder im Visualisierungsdiagramm den Auftrag aus, den du anzeigen möchtest.

  6. Alle fehlerhaften Schritte werden automatisch erweitert, um die Ergebnisse anzuzeigen.

  7. Klicke bei Bedarf auf die Zeilennummer des Schritts, um einen Link zu einer bestimmten Zeile in den Logs zu erhalten. Den Link kannst du anschließend aus der Adressleiste deines Webbrowsers kopieren.

    Screenshot der Protokolle für einen Auftrag. Die Protokolle für einen fehlerhaften Schritt sind erweitert, und eine Zeilennummer ist mit einem orangefarbenen Umriss hervorgehoben.

Protokolle durchsuchen

Du kannst die Build-Protokolle für einen bestimmten Arbeitsschritt durchsuchen. Beim Durchsuchen von Logs werden nur erweiterte Schritte in die Ergebnisse einbezogen. Um diese Schritte auszuführen, ist Lesezugriff auf das Repository erforderlich.

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Klicke unter dem Repositorynamen auf Actions.

    Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.

  3. Klicke in der linken Seitenleiste auf den Workflow, den Du sehen willst.

    Screenshot der linken Randleiste der Registerkarte „Aktionen“. Ein Workflow, „CodeQL“, ist dunkelorange umrandet.

  4. Klicke in der Liste der Workflowausführungen auf den Namen der Ausführung, um die Zusammenfassung der Workflowausführung anzuzeigen.

  5. Wähle unter Aufträge oder im Visualisierungsdiagramm den Auftrag aus, den du anzeigen möchtest.

  6. Gib oben rechts in der Protokollausgabe eine Suchanfrage in das Suchfeld Protokolle durchsuchen ein.

Herunterladen von Protokollen

Du kannst die Protokolldateien aus deiner Workflowausführung herunterladen. Außerdem kannst du Artefakte eines Workflows herunterladen. Weitere Informationen finden Sie unter Speichern und Freigeben von Daten mit Workflowartefakten. Um diese Schritte auszuführen, ist Lesezugriff auf das Repository erforderlich.

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Klicke unter dem Repositorynamen auf Actions.

    Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.

  3. Klicke in der linken Seitenleiste auf den Workflow, den Du sehen willst.

    Screenshot der linken Randleiste der Registerkarte „Aktionen“. Ein Workflow, „CodeQL“, ist dunkelorange umrandet.

  4. Klicke in der Liste der Workflowausführungen auf den Namen der Ausführung, um die Zusammenfassung der Workflowausführung anzuzeigen.

  5. Wähle unter Aufträge oder im Visualisierungsdiagramm den Auftrag aus, den du anzeigen möchtest.

  6. Wählen Sie in der oberen rechten Ecke des Protokolls das Dropdownmenü aus, und klicken Sie dann auf "Protokollarchiv herunterladen".

    Screenshot des Protokolls für einen Auftrag. In der Kopfzeile ist ein Zahnradsymbol dunkelorange umrandet.

Hinweis

Wenn du das Protokollarchiv für einen Workflow herunterlädst, der teilweise erneut ausgeführt wurde, enthält das Archiv nur die erneut ausgeführten Aufträge. Zum Abrufen einer vollständigen Menge von Protokollen, die über einen Workflow ausgeführt wurden, musst du die Protokollarchive für die vorherigen Ausführungsversuche herunterladen, bei denen die anderen Aufträge ausgeführt wurden.

Logs löschen

Sie können die Protokolldateien aus Ihrem Workflow über die GitHub Weboberfläche oder programmgesteuert löschen. Um diese Schritte auszuführen, ist Schreibzugriff auf das Repository erforderlich.

Löschen von Protokollen über die GitHub Webschnittstelle

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Klicke unter dem Repositorynamen auf Actions.

    Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.

  3. Klicke in der linken Seitenleiste auf den Workflow, den Du sehen willst.

    Screenshot der linken Randleiste der Registerkarte „Aktionen“. Ein Workflow, „CodeQL“, ist dunkelorange umrandet.

  4. Klicke in der Liste der Workflowausführungen auf den Namen der Ausführung, um die Zusammenfassung der Workflowausführung anzuzeigen.

  5. Wählen Sie in der oberen rechten Ecke das Dropdownmenü aus, und klicken Sie dann auf "Alle Protokolle löschen".

    Screenshot der Seite für einen Workflow-Run. In der rechten oberen Ecke ist eine Schaltfläche mit drei Punkten dunkelorange umrandet.

  6. Überprüfen Sie die Bestätigungsaufforderung.

Nach dem Löschen von Protokollen wird die Schaltfläche Alle Protokolle löschen entfernt, um darauf hinzuweisen, dass keine Protokolldateien mehr in der Workflowausführung vorhanden sind.

Programmgesteuertes Löschen von Protokollen

Sie können das folgende Skript verwenden, um automatisch alle Protokolle für einen Workflow zu löschen. Dies kann eine nützliche Methode sein, um Protokolle für mehrere Workflow-Ausführungen zu bereinigen.

So führen Sie das folgende Beispielskript aus:

  1. Kopieren Sie das Codebeispiel, und speichern Sie es in einer Datei namens delete-logs.sh.

  2. Erteilen Sie mit chmod +x delete-logs.sh Ausführungsberechtigungen.

  3. Führen Sie den folgenden Befehl aus, wobei REPOSITORY_NAME den Namen Ihres Repositorys und WORKFLOW_NAME den Dateinamen Ihres Workflows darstellen.

    Shell
    ./delete-logs.sh REPOSITORY_NAME WORKFLOW_NAME
    

    Um beispielsweise alle Protokolle im monalisa/octocat-Repository für den .github/workflows/ci.yaml-Workflow zu löschen, würden Sie ./delete-logs.sh monalisa/octocat ci.yaml ausführen.

Beispielskript

Bash
#!/usr/bin/env bash

# Delete all logs for a given workflow
# Usage: delete-logs.sh <repository> <workflow-name>

set -oe pipefail

REPOSITORY=$1
WORKFLOW_NAME=$2

# Validate arguments
if [[ -z "$REPOSITORY" ]]; then
  echo "Repository is required"
  exit 1
fi

if [[ -z "$WORKFLOW_NAME" ]]; then
  echo "Workflow name is required"
  exit 1
fi

echo "Getting all completed runs for workflow $WORKFLOW_NAME in $REPOSITORY"

RUNS=$(
  gh api \
    -H "Accept: application/vnd.github+json" \
    -H "X-GitHub-Api-Version: 2022-11-28" \
    "/repos/$REPOSITORY/actions/workflows/$WORKFLOW_NAME/runs" \
    --paginate \
    --jq '.workflow_runs[] | select(.conclusion != "") | .id'
)

echo "Found $(echo "$RUNS" | wc -l) completed runs for workflow $WORKFLOW_NAME"

# Delete logs for each run
for RUN in $RUNS; do
  echo "Deleting logs for run $RUN"
  gh api \
    --silent \
    --method DELETE \
    -H "Accept: application/vnd.github+json" \
    -H "X-GitHub-Api-Version: 2022-11-28" \
    "/repos/$REPOSITORY/actions/runs/$RUN/logs" || echo "Failed to delete logs for run $RUN"

  # Sleep for 100ms to avoid rate limiting
  sleep 0.1
done

Protokolle anzeigen mit GitHub CLI

Hinweis

Weitere Informationen zur GitHub CLI findest du unter Informationen zu GitHub CLI.

Verwende den Unterbefehl run view, um das Protokoll für einen bestimmten Auftrag anzuzeigen. Ersetze run-id durch die ID der Ausführung, für die du Protokolle anzeigen möchtest. GitHub CLI gibt ein interaktives Menü für Sie zurück, um einen Auftrag aus der Ausführung auszuwählen. Wenn Sie run-id nicht angeben, gibt GitHub CLI ein interaktives Menü zurück, in dem Sie einen kürzlichen Lauf auswählen können, und anschließend ein weiteres interaktives Menü, in dem Sie einen Job aus diesem Lauf auswählen können.

gh run view RUN_ID --log

Du kannst auch das Flag --job verwenden, um eine Auftrags-ID anzugeben. Ersetze job-id durch die ID des Auftrags, für den du Protokolle anzeigen möchtest.

gh run view --job JOB_ID --log

Du kannst grep verwenden, um das Protokoll zu durchsuchen. Mit diesem Befehl können beispielsweise alle Protokolleinträge zurückgegeben werden, die das Wort errorenthalten.

gh run view --job JOB_ID --log | grep error

Zum Filtern der Protokolle nach fehlgeschlagenen Schritten verwende --log-failed anstelle von --log.

gh run view --job JOB_ID --log-failed