{"meta":{"title":"Speichern und Freigeben von Daten mit Workflowartefakten","intro":"Verwende Artefakte, um Daten zwischen Aufträgen in einem Workflow freizugeben und Daten zu speichern, sobald dieser Workflow abgeschlossen ist.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/actions","title":"GitHub Actions"},{"href":"/de/actions/tutorials","title":"Anleitungen"},{"href":"/de/actions/tutorials/store-and-share-data","title":"Speichern und Freigeben von Daten"}],"documentType":"article"},"body":"# Speichern und Freigeben von Daten mit Workflowartefakten\n\nVerwende Artefakte, um Daten zwischen Aufträgen in einem Workflow freizugeben und Daten zu speichern, sobald dieser Workflow abgeschlossen ist.\n\n## Voraussetzungen\n\nBevor du dieses Tutorial durcharbeiten kannst, musst du dich mit Workflowartefakten vertraut machen. Weitere Informationen findest du unter [Workflowartefakte](/de/actions/concepts/workflows-and-actions/workflow-artifacts).\n\n## Build- und Test-Artefakte hochladen\n\nDurch 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.\n\nDu kannst die `upload-artifact`-Aktion verwenden, um Artefakte hochzuladen. Beim Hochladen eines Artefakts kannst du eine einzelne Datei oder ein einzelnes Verzeichnis oder mehrere Dateien oder Verzeichnisse angeben. Du kannst auch bestimmte Dateien oder Verzeichnisse ausschließen und Platzhaltermuster verwenden. Es wird empfohlen, einen Namen für ein Artefakt anzugeben, aber wenn kein Name angegeben wird, wird `artifact` als Standardname verwendet. Weitere Informationen zur Syntax findest du unter der Aktion [actions/upload-artifact](https://github.com/actions/upload-artifact) action.\n\n### Beispiel\n\nZum Beispiel kann dein Projektarchiv oder eine Webanwendung SASS- und TypeScript-Dateien enthalten, die du in CSS und JavaScript konvertieren musst. Wenn du davon ausgehst, dass deine Buildkonfiguration die kompilierten Dateien in das Verzeichnis `dist` ausgibt, würdest du die Dateien im Verzeichnis `dist` auf deinem Webanwendungsserver bereitstellen, wenn alle Tests erfolgreich abgeschlossen wurden.\n\n```text\n|-- hello-world (repository)\n|   └── dist\n|   └── tests\n|   └── src\n|       └── sass/app.scss\n|       └── app.ts\n|   └── output\n|       └── test\n|\n```\n\nDieses Beispiel zeigt dir, wie du einen Workflow für ein Node.js-Projekt erstellst, der den Code im Verzeichnis `src` erstellt und die Tests im Verzeichnis `tests` ausführt. Du kannst davon ausgehen, dass die Ausführung von `npm test` einen Code Coverage-Bericht namens `code-coverage.html` erstellt, der im Verzeichnis `output/test/` gespeichert wird.\n\nDer Workflow lädt die Produktionsartefakte im Verzeichnis `dist` hoch, schließt jedoch alle Markdowndateien aus. Außerdem wird der `code-coverage.html`-Bericht als weiteres Artefakt hochgeladen.\n\n```yaml copy\nname: Node CI\n\non: [push]\n\njobs:\n  build_and_test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: npm install, build, and test\n        run: |\n          npm install\n          npm run build --if-present\n          npm test\n      - name: Archive production artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: dist-without-markdown\n          path: |\n            dist\n            !dist/**/*.md\n      - name: Archive code coverage results\n        uses: actions/upload-artifact@v4\n        with:\n          name: code-coverage-report\n          path: output/test/code-coverage.html\n```\n\n## Konfigurieren eines benutzerdefinierten Aufbewahrungszeitraums für Artefakte\n\nDu kannst einen benutzerdefinierten Aufbewahrungszeitraum für einzelne Artefakte definieren, die von einem Workflow erstellt wurden. Wenn du einen Workflow zum Erstellen eines neuen Artefakts verwendest, kannst du `retention-days` mit der `upload-artifact`-Aktion verwenden. In diesem Beispiel wird veranschaulicht, wie du einen benutzerdefinierten Aufbewahrungszeitraum von 5 Tagen für das Artefakt namens `my-artifact` festlegst:\n\n```yaml copy\n  - name: 'Upload Artifact'\n    uses: actions/upload-artifact@v4\n    with:\n      name: my-artifact\n      path: my_file.txt\n      retention-days: 5\n```\n\nDer `retention-days`-Wert darf den vom Repository, der Organisation oder dem Unternehmen festgelegten Aufbewahrungsgrenzwert nicht überschreiten.\n\n## Herunterladen von Artefakten während einer Workflowausführung\n\nDu kannst die Aktion [`actions/download-artifact`](https://github.com/actions/download-artifact) verwenden, um zuvor hochgeladene Artefakte während einer Workflowausführung herunterzuladen.\n\n> \\[!NOTE]\n> Wenn du Artefakte aus einem anderen Workflow oder Workflowlauf herunterladen möchtest, musst du ein Token und einen Ausführungsbezeichner angeben. Weitere Informationen finden Sie unter [Herunterladen von Artefakten aus anderen Workflow-Abläufen oder Repositories](https://github.com/actions/download-artifact?tab=readme-ov-file#download-artifacts-from-other-workflow-runs-or-repositories) in der Dokumentation zur `download-artifact`-Aktion.\n\nGib den Namen eines Artefaktes an, um ein einzelnes Artefakt herunterzuladen. Wenn du ein Artefakt hochgeladen hast, ohne einen Namen anzugeben, lautet der Standardname `artifact`.\n\n```yaml\n- name: Download a single artifact\n  uses: actions/download-artifact@v5\n  with:\n    name: my-artifact\n```\n\nDu kannst auch alle Artefakte in einer Workflowausführung herunterladen, indem du keinen Namen angibst. Dies kann nützlich sein, wenn du mit zahlreichen Artefakten arbeitest.\n\n```yaml\n- name: Download all workflow run artifacts\n  uses: actions/download-artifact@v5\n```\n\nWenn du die Artefakte aller Workflowausführungen herunterlädst, wird ein Verzeichnis für jedes Artefakt unter Verwendung seines Namens erstellt.\n\nWeitere Informationen zur Syntax findest du in der [actions/download-artifact](https://github.com/actions/download-artifact) action.\n\n## Übergeben von Daten zwischen Aufträgen in einem Workflow\n\nDu kannst die Aktionen `upload-artifact` und `download-artifact` verwenden, um Daten zwischen Aufträgen in einem Workflow freizugeben. In diesem Beispiel-Workflow wird veranschaulicht, wie Daten zwischen Aufträgen im selben Workflow weitergegeben werden. Weitere Informationen zur Syntax findest du unter den Aktionen [actions/upload-artifact](https://github.com/actions/upload-artifact) und [download-artifact](https://github.com/actions/download-artifact) actions.\n\nVon den Artefakten eines vorherigen Auftrags abhängige Aufträge müssen auf den erfolgreichen Abschluss des abhängigen Auftrags warten. Dieser Workflow verwendet das `needs`-Schlüsselwort, um sicherzustellen, dass `job_1`, `job_2` und `job_3` sequenziell ausgeführt werden.\n`job_2` erfordert z. B. `job_1` mit der `needs: job_1`-Syntax.\n\nAuftrag 1 führt die folgenden Schritte durch:\n\n* Führt eine mathematische Berechnung aus und speichert das Ergebnis in einer Textdatei namens `math-homework.txt`.\n* Verwendet die `upload-artifact`-Aktion zum Hochladen der `math-homework.txt`-Datei mit dem Artefaktnamen `homework_pre`.\n\nAuftrag 2 verwendet das Ergebnis des vorherigen Auftrags:\n\n* Lädt das `homework_pre` endif %}-Artefakt herunter, das im vorherigen Auftrag hochgeladen wurde. Die Aktion `download-artifact` lädt die Artefakte standardmäßig in das Arbeitsbereichverzeichnis herunter, in dem der Schritt ausgeführt wird. Du kannst den Eingabeparameter `path` verwenden, um ein anderes Downloadverzeichnis anzugeben.\n* Liest den Wert in der Datei `math-homework.txt`, führt eine mathematische Berechnung aus, und speichert das Ergebnis erneut in `math-homework.txt`, wobei der Inhalt überschrieben wird.\n* Lädt die Datei `math-homework.txt` hoch. Da Artefakte in `v4` als unveränderlich gelten, wird dem Artefakt ein anderer Input, `homework_final`, als Name übergeben.\n\nAuftrag 3 zeigt das im vorherigen Auftrag hochgeladene Ergebnis an:\n\n* Lädt das `homework_final`-Artefakt von Job 2.\n* Gibt das Ergebnis der mathematischen Gleichung in das Protokoll aus.\n\nDie vollständige, in diesem Workflow-Beispiel durchgeführte mathematische Operation lautet `(3 + 7) x 9 = 90`.\n\n```yaml copy\nname: Share data between jobs\n\non: [push]\n\njobs:\n  job_1:\n    name: Add 3 and 7\n    runs-on: ubuntu-latest\n    steps:\n      - shell: bash\n        run: |\n          expr 3 + 7 > math-homework.txt\n      - name: Upload math result for job 1\n        uses: actions/upload-artifact@v4\n        with:\n          name: homework_pre\n          path: math-homework.txt\n\n  job_2:\n    name: Multiply by 9\n    needs: job_1\n    runs-on: windows-latest\n    steps:\n      - name: Download math result for job 1\n        uses: actions/download-artifact@v5\n        with:\n          name: homework_pre\n      - shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          expr $value \\* 9 > math-homework.txt\n      - name: Upload math result for job 2\n        uses: actions/upload-artifact@v4\n        with:\n          name: homework_final\n          path: math-homework.txt\n\n  job_3:\n    name: Display results\n    needs: job_2\n    runs-on: macOS-latest\n    steps:\n      - name: Download math result for job 2\n        uses: actions/download-artifact@v5\n        with:\n          name: homework_final\n      - name: Print the final result\n        shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          echo The result is $value\n```\n\nDie Workflowausführung archiviert alle von ihr generierten Artefakte. Weitere Informationen zum Herunterladen archivierter Artefakte findest du unter [Herunterladen von Workflowartefakten](/de/actions/managing-workflow-runs/downloading-workflow-artifacts).\n\n## Überprüfen von Artefakten\n\nJedes Mal, wenn die Aktion „upload-artifact“ verwendet wird, wird eine Ausgabe mit dem Namen `digest` zurückgegeben. Dies ist ein SHA256-Digest des Artefakts, das du während einer Workflowausführung hochgeladen hast.\n\nWenn die Aktion „download-artifact“ dann zum Herunterladen dieses Artefakts verwendet wird, berechnet sie automatisch den Digest für dieses heruntergeladene Artefakt und überprüft, ob sie mit der Ausgabe aus dem Schritt „upload-artifact“ übereinstimmt.\n\nWenn der Digest nicht übereinstimmt, zeigt die Ausführung eine Warnung auf der Benutzeroberfläche und in den Auftragsprotokollen an.\n\nÖffne die Protokolle für den Uploadartefaktauftrag, oder checke die Artefaktausgabe ein, die auf der Benutzeroberfläche der Workflowausführung angezeigt wird, um den SHA256-Digest anzuzeigen."}