Storing workflow data as artifacts

Mit Artefakten kannst Du Daten zwischen Aufträgen in einem Workflow freigeben und Daten nach Abschluss des Workflows speichern.

GitHub Actions ist verfügbar mit GitHub Free, GitHub Pro, GitHub Free für Organisationen, GitHub Team, GitHub Enterprise Cloud, und GitHub AE. GitHub Actions ist nicht verfügbar für private Repositorys, die im Besitz von Konten mit älteren Pro-Repository-Plänen sind. For more information, see "GitHub's products."

Informationen zu Workflow-Artefakten

Artefakte erlauben es dir, Daten nach dem Job-Abschluss abzuspeichern und diese Daten an einen anderen Job im selben Workflow weiterzugeben. Ein Artefakt ist eine Datei oder eine Dateisammlung, die während einer Workflow-Ausführung erstellt wird. Zum Beispiel kannst Du Artefakte verwenden, um Deine Build- und Testausgabe zu speichern, nachdem ein Workflow-Lauf beendet ist.

By default, GitHub stores build logs and artifacts for 90 days, and this retention period can be customized. For more information, see "Usage limits, billing, and administration". The retention period for a pull request restarts each time someone pushes a new commit to the pull request.

Dies sind einige der gängigen Artefakte, die du hochladen kannst:

  • Protokolldateien und Coredumps
  • Testergebnisse, Fehler und Screenshots
  • Binäre oder komprimierte Dateien
  • Ergebnisse zur Stresstest-Leistungsausgabe und Codeabdeckung

Das Speichern von Artefakten verwendet Speicherplatz auf GitHub. GitHub Actions usage is free for both public repositories and self-hosted runners. Für private Repositorys erhält jedes GitHub Konto eine bestimmte Menge von kostenlosen Minuten und Speicher, abhängig vom Produkt, das mit dem Konto verwendet wird. Any usage beyond the included amounts is controlled by spending limits. Weitere Informationen findest Du unter „Abrechnung für GitHub Actions verwalten“.

Artefakte werden während eines Workflow-Laufs hochgeladen und Du kannst den Namen und die Größe eines Artefakts in der Benutzeroberfläche anzeigen. Wenn ein Artefakt mit der GitHub-Oberfläche heruntergeladen wird, werden alle Dateien, die als Teil des Artefakts einzeln hochgeladen wurden, zusammen in eine einzige Datei gezippt. Die Abrechnung erfolgt anhand der Größe des hochgeladenen Artefakts und nicht der Größe der Zip-Datei erfolgt.

GitHub bietet zwei Aktionen, über die Sie Build-Artefakte hoch- und herunterladen können. For more information, see the actions/upload-artifact and download-artifact actions.

Daten zwischen Aufträgen freigeben:

  • Dateien hochladen: Gib der hochgeladenen Datei einen Namen und lade die Daten hoch, bevor der Job endet.
  • Dateien herunterladen: Du kannst nur Artefakte herunterladen, die während des gleichen Workflow-Laufs hochgeladen wurden. Wenn Du eine Datei herunterlädst, kannst Du sie mit Namen referenzieren.

Die Steps („Schritte“) eines Jobs teilen sich die selbe Umgebung auf der Runner-Maschine, laufen aber in ihren eigenen individuellen Prozessen. Mithilfe von Ein- und Ausgaben können Sie Daten zwischen den Schritten in einem Auftrag weitergeben. Weitere Informationen zu Ein- und Ausgaben findest Du unter „Metadatensyntax für GitHub Actions“.

Build- und Testartefakte hochladen

Du kannst einen Workflow für kontinuierliche Integration (CI) erstellen, um Deinen Code zu bauen und zu testen. For more information about using GitHub Actions to perform CI, see "About continuous integration."

Durch die Ergebnisse der Erstellung und des Tests Deines Codes werden oft zum Debuggen von Testfehlern einsetzbare Dateien und bereitstellbarer Produktionscode erstellt. Du kannst einen Workflow konfigurieren, um den per Push-Vorgang an Dein Repository übertragenen Code zu erstellen und zu testen und um einen erfolgreichen oder fehlerhaften Status zu melden. Du kannst die Build- und Testausgabe hochladen, um sie für Bereitstellungen, zum Debuggen fehlerhafter Tests oder von Abstürzen und zum Anzeigen der Testsuite-Abdeckung zu verwenden.

Du kannst die Aktion upload-artifact verwenden um Artefakte hochzuladen. Beim Hochladen eines Artefakts können Sie eine einzelne Datei oder ein Verzeichnis oder mehrere Dateien oder Verzeichnisse angeben. Sie können auch bestimmte Dateien oder Verzeichnisse ausschließen und Platzhaltermuster verwenden. Es wird empfohlen, einen Namen für ein Artefakt bereitzustellen, aber wenn kein Name angegeben wird, wird Artefakt als Standardname verwendet. For more information on syntax, see the actions/upload-artifact action.

Beispiel

Zum Beispiel kann Dein Projektarchiv oder eine Webanwendung SASS- und TypeScript-Dateien enthalten, die Du in CSS und JavaScript konvertieren musst. Falls Dein Build-Konfiguration die kompilierten Dateien im Verzeichnis dist ausgibt, würdest Du die im Verzeichnis dist enthaltenen Dateien auf Deinem Webanwendungsserver bereitstellen, sofern alle Tests erfolgreich abgeschlossen werden.

|-- hello-world (repository)
|   └── dist
|   └── tests
|   └── src
|       └── sass/app.scss
|       └── app.ts
|   └── output
|       └── test
|   

In diesem Beispiel wird gezeigt, wie Sie einen Workflow für ein Node.js-Projekt erstellen, das den Code im src-Verzeichnis erstellt und die Tests im tests-Verzeichnis ausführt. Wenn npm test ausgeführt wird, wird im Verzeichnis output/test/ ein Bericht zur Codeabdeckung mit dem Namen code-coverage.html erstellt und gespeichert.

Der Workflow lädt die Produktionsartefakte in das dist Verzeichnis, schließt jedoch alle Markdowndateien aus. Es lädt auch die code-coverage.html Bericht als ein weiteres Artefakt.

YAML
Name: Node CI

on: [push]

jobs:
  build_and_test:
    läuft auf: ubuntu-latest
    schritte:
      - name: Checkout repository
        verwendet: actions/checkout@v2
      - name: npm install, build, and test
        run: |
          npm installieren sie
          npm run build --if-present
          npm test
      - name: Archiv production artifacts
        uses: actions/upload-artifact@v2
        with:
          name: dist-without-markdown
          path: |
            dist
            !dist/**/*md
      - Name: Archivcodeabdeckungsergebnisse
        verwendet: Aktionen/Upload-artifact@v2
        mit:
          Name: code-coverage-report
          pfad: output/test/code-coverage.html

Configuring a custom artifact retention period

You can define a custom retention period for individual artifacts created by a workflow. When using a workflow to create a new artifact, you can use retention-days with the upload-artifact action. This example demonstrates how to set a custom retention period of 5 days for the artifact named my-artifact:

YAML
  - name: 'Upload Artifact'
    uses: actions/upload-artifact@v2
    with:
      name: my-artifact
      path: my_file.txt
      retention-days: 5

The retention-days value cannot exceed the retention limit set by the repository, organization, or enterprise.

Artefakte herunterladen oder löschen

During a workflow run, you can use the download-artifactaction to download artifacts that were previously uploaded in the same workflow run.

After a workflow run has been completed, you can download or delete artifacts on GitHub or using the REST API. For more information, see "Downloading workflow artifacts," "Removing workflow artifacts," and the "Artifacts REST API."

Herunterladen von Artefakten während einer Workflowausführung

The actions/download-artifact action can be used to download previously uploaded artifacts during a workflow run.

Hinweis: Sie können nur Artefakte in einem Workflow herunterladen, die während desselben Workflowlaufs hochgeladen wurden.

Geben Sie den Namen eines Artefakts an, um ein einzelnes Artefakt herunterzuladen. Wenn Sie ein Artefakt hochgeladen haben, ohne einen Namen anzugeben, lautet der Standardname Artefakt.

- Name: Laden Sie ein einzelnes Artefakt
  verwendet: Aktionen/Download-artifact@v2
  mit:
    Name: my-artifact

Sie können auch alle Artefakte in einem Workflow herunterladen, der ausgeführt wird, indem Sie keinen Namen angeben. Dies kann nützlich sein, wenn Sie mit vielen Artefakten arbeiten.

- Name: Laden Sie alle Workflow-Ausführungsartefakte
  verwendet: Aktionen/Download-artifact@v2

Wenn Sie alle Artefakte einer Workflowausführung herunterladen, wird ein Verzeichnis für jedes Artefakt mit seinem Namen erstellt.

For more information on syntax, see the actions/download-artifact action.

Daten zwischen Aufträgen in einem Workflow weitergeben

Du kannst die Aktionen upload-artifact und download-artifact verwenden, um innerhalb eines Workflows Daten zwischen Jobs auszutauschen. In diesem Beispiel-Workflow wird veranschaulicht, wie Daten zwischen Aufträgen im selben Workflow weitergegeben werden. For more information, see the actions/upload-artifact and download-artifact actions.

Von den Artefakten eines vorherigen Auftrags abhängige Aufträge müssen auf den erfolgreichen Abschluss des abhängigen Auftrags warten. Bei diesem Workflow kommt das Stichwort needs zum Einsatz, um sicherzustellen, dass job_1, job_2 und job_3 sequenziell ausgeführt werden. Beispielsweise schreibt job_2 vor, dass job_1 die Syntax needs: job_1 verwendet.

Auftrag 1 führt die folgenden Schritte durch:

  • Führt eine mathematische Berechnung aus und speichert das Ergebnis in einer Textdatei namens math-homework.txt.
  • Uses the upload-artifact action to upload the math-homework.txt file with the artifact name homework.

Auftrag 2 verwendet das Ergebnis des vorherigen Auftrags:

  • Lädt das im vorherigen Auftrag hochgeladene homework-Artefakt herunter. Die Aktion download-artifact lädt die Artefakte standardmäßig in das Verzeichnis der Arbeitsoberfläche, in dem der Schritt ausgeführt wird. Du kannst den Eingabeparameter path verwenden, um ein anderes Download-Verzeichnis anzugeben.
  • Reads the value in the math-homework.txt file, performs a math calculation, and saves the result to math-homework.txt again, overwriting its contents.
  • Lädt die Datei math-homework.txt hoch. This upload overwrites the previously uploaded artifact because they share the same name.

Auftrag 3 zeigt das im vorherigen Auftrag hochgeladene Ergebnis an:

  • Lädt das homework-Artefakt herunter.
  • Gibt das Ergebnis der mathematischen Gleichung im Protokoll aus.

Die vollständige, in diesem Workflow-Beispiel durchgeführte mathematische Operation lautet (3 + 7) x 9 = 90.

YAML
name: Daten zwischen Jobs

teilen: [push]

Jobs:
  job_1:
    Name: Hinzufügen von 3 und 7
    -Runs-on: ubuntu-latest
    Schritte:
      - shell: bash
        run: |
          expr 3 + 7 > math-homework.txt
      - Name: Math-Ergebnis für Job 1
        verwendet: Aktionen/Upload-artifact@v2
        mit:
          Name: Hausaufgaben
          Pfad: math-homework.txt

  job_2:
    Name: Multiplizieren mit 9
    benötigt: job_1
    -Run-on: Windows-neueste
    Schritte:
      - Name: Download Mathe-Ergebnis für Job 1
        verwendet: Aktionen
        
      
          artifact@v2
        /
          value='cat math-homework.txt'
          expr $value '* 9 > math-homework.txt
      - Name: Math-Ergebnis für Job 2
        verwendet: aktionen/upload-artifact@v2
        mit:
          Name: Hausaufgaben
          Pfad: math-homework.txt

  job_3:
    Name: Anzeigeergebnisse
    Bedürfnisse: job_2
    -Auslauf: macOS-neueste
    Schritte:
      - Name: Mathematisches Ergebnis für Job 2
        verwendet: Aktionen/Download-artifact@v2
        mit:
          Name: Hausaufgaben
      - Name: Drucken sie das Endergebnis
        Shell: bash
        run: |
          value='cat math-homework.txt'
          echo Das Ergebnis ist $value

The workflow run will archive any artifacts that it generated. For more information on downloading archived artifacts, see "Downloading workflow artifacts."

Workflow, der zum Durchführen mathematischer Operationen Daten zwischen Aufträgen weitergibt

Weiterführende Informationen

Did this doc help you?Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Oder, learn how to contribute.