{"meta":{"title":"Stocker et partager des données avec les artefacts de workflow","intro":"Utilisez des artefacts pour partager des données entre les tâches d’un flux de travail et stocker les données une fois le flux de travail terminé.","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/enterprise-cloud@latest/actions","title":"GitHub Actions"},{"href":"/fr/enterprise-cloud@latest/actions/tutorials","title":"Tutoriels"},{"href":"/fr/enterprise-cloud@latest/actions/tutorials/store-and-share-data","title":"Stocker et partager des données"}],"documentType":"article"},"body":"# Stocker et partager des données avec les artefacts de workflow\n\nUtilisez des artefacts pour partager des données entre les tâches d’un flux de travail et stocker les données une fois le flux de travail terminé.\n\n## Prérequis\n\nAvant de pouvoir terminer ce tutoriel, vous devez comprendre les artefacts du flux de travail. Consultez « [Artefacts de workflow](/fr/enterprise-cloud@latest/actions/concepts/workflows-and-actions/workflow-artifacts) ».\n\n## Chargement d’artefacts de build et de test\n\nLa sortie générée par la compilation et le test de votre code produit souvent des fichiers que vous pouvez utiliser pour déboguer les échecs de test ainsi que le code prêt pour la production. Vous pouvez configurer un workflow pour compiler et tester le code poussé vers votre référentiel et signaler un état de réussite ou d’échec. Vous pouvez téléverser les résultats de construction et de test afin de les utiliser pour les déploiements, déboguer les tests échoués ou les plantages, ainsi qu’afficher la couverture de la suite de tests.\n\nVous pouvez utiliser l’action `upload-artifact` pour charger des artefacts. Lors du chargement d’un artefact, vous pouvez spécifier un fichier ou répertoire unique, ou bien plusieurs fichiers ou répertoires. Vous pouvez également exclure certains fichiers ou répertoires, et utiliser des modèles à caractères génériques. Nous vous recommandons d’attribuer un nom à un artefact, mais si aucun nom n’est fourni, `artifact` est utilisé comme nom par défaut. Pour plus d’informations sur la syntaxe, consultez l’action [actions/upload-artifact](https://github.com/actions/upload-artifact).\n\n### Exemple\n\nPar exemple, votre dépôt ou une application web peuvent contenir des fichiers SASS et TypeScript que vous devez convertir en CSS et JavaScript. En supposant que votre configuration de build génère les fichiers compilés dans le répertoire `dist`, vous devez déployer les fichiers dans le répertoire `dist` sur votre serveur d’applications web si tous les tests ont réussi.\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\nCet exemple montre comment créer un workflow pour un projet Node.js qui génère le code dans le répertoire `src` et exécute les tests dans le répertoire `tests`. Vous pouvez supposer que l’exécution de `npm test` produit un rapport de couverture de code nommé `code-coverage.html` stocké dans le répertoire `output/test/`.\n\nLe workflow charge les artefacts de production dans le répertoire `dist`, mais exclut tous les fichiers markdown. Il charge également le rapport `code-coverage.html` sous la forme d’un autre artefact.\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## Configuration d’une période de conservation des artefacts personnalisée\n\nVous pouvez définir une période de conservation personnalisée pour les artefacts individuels créés par un workflow. Lorsque vous utilisez un workflow pour créer un artefact, vous pouvez utiliser `retention-days` avec l’action `upload-artifact`. Cet exemple montre comment définir une période de conservation personnalisée de 5 jours pour l’artefact nommé `my-artifact` :\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\nLa valeur `retention-days` ne peut pas dépasser la limite de conservation définie par le dépôt, l’organisation ou l’entreprise.\n\n## Téléchargement d’artefacts pendant l’exécution d’un workflow\n\nVous pouvez utiliser l’action [`actions/download-artifact`](https://github.com/actions/download-artifact) pour télécharger les artefacts précédemment téléchargés pendant l’exécution d’un flux de travail.\n\n> \\[!NOTE]\n> Si vous souhaitez télécharger des artefacts à partir d’un flux de travail ou d’une exécution de flux de travail différent, vous devez fournir un jeton et un identificateur d’exécution. Consultez la section [Téléchargement des artefacts à partir d’autres exécutions de workflows ou de référentiels](https://github.com/actions/download-artifact?tab=readme-ov-file#download-artifacts-from-other-workflow-runs-or-repositories) dans la documentation de l’action `download-artifact`.\n\nSpécifiez le nom d’un artefact pour télécharger un artefact individuel. Si vous avez chargé un artefact sans spécifier de nom, le nom par défaut est `artifact`.\n\n```yaml\n- name: Download a single artifact\n  uses: actions/download-artifact@v5\n  with:\n    name: my-artifact\n```\n\nVous pouvez également télécharger tous les artefacts d’une exécution de workflow en ne spécifiant pas de nom. Cela peut être utile si vous utilisez beaucoup d’artefacts.\n\n```yaml\n- name: Download all workflow run artifacts\n  uses: actions/download-artifact@v5\n```\n\nSi vous téléchargez tous les artefacts de l’exécution de workflow, un répertoire est créé pour chaque artefact à l’aide de son nom.\n\nPour plus d’informations sur la syntaxe, consultez l’action [actions/download-artifact](https://github.com/actions/download-artifact).\n\n## Passage de données entre les travaux d’un flux de travail\n\nVous pouvez utiliser les actions `upload-artifact` et `download-artifact` pour partager des données entre des travaux d’un workflow. Cet exemple de workflow montre comment transférer des données entre des travaux d’un même workflow. Pour plus d’informations, consultez les actions [actions/upload-artifact](https://github.com/actions/upload-artifact) et [download-artifact](https://github.com/actions/download-artifact).\n\nLes travaux qui dépendent des artefacts d’un travail précédent doivent attendre que le travail dépendant se termine correctement. Ce workflow utilise le mot clé `needs` pour garantir que `job_1`, `job_2` et `job_3` s’exécutent de manière séquentielle. Par exemple, `job_2` exige `job_1` en utilisant la syntaxe `needs: job_1`.\n\nJob 1 effectue les étapes suivantes :\n\n* Effectue un calcul mathématique et enregistre le résultat dans un fichier texte appelé `math-homework.txt`.\n* Utilise l’action `upload-artifact` pour charger le fichier `math-homework.txt` avec le nom de l’artefact `homework_pre`.\n\nJob 2 utilise le résultat du travail précédent :\n\n* Télécharge l’artefact `homework_pre` chargé lors de la tâche précédente. Par défaut, l’action `download-artifact` télécharge les artefacts dans le répertoire de l’espace de travail dans lequel l’étape s’exécute. Vous pouvez utiliser le paramètre d’entrée `path` pour spécifier un autre répertoire de téléchargement.\n* Lit la valeur dans le fichier `math-homework.txt`, effectue un calcul mathématique, puis enregistre à nouveau le résultat dans `math-homework.txt`, en remplaçant son contenu.\n* Charge le fichier `math-homework.txt`. Comme les artefacts sont considérés comme immuables dans `v4`, l’artefact reçoit une autre entrée, `homework_final` en tant que nom.\n\nJob 3 affiche le résultat téléchargé depuis le travail précédent :\n\n* Télécharge l’artefact `homework_final` à partir de l’artefact Job 2.\n* Imprime le résultat de l’équation mathématique dans le journal de bord.\n\nL’opération mathématique complète effectuée dans cet exemple de workflow est `(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\nL’exécution du workflow archive tous les artefacts qu’elle a générés. Pour plus d’informations sur le téléchargement des artefacts archivés, consultez « [Téléchargement d’artéfacts de workflow](/fr/enterprise-cloud@latest/actions/managing-workflow-runs/downloading-workflow-artifacts) ».\n\n## Validation des artefacts\n\nChaque fois que l’action upload-artifact est utilisée, elle retourne une sortie appelée `digest`. Il s’agit d’une synthèse SHA256 de l’artefact que vous avez chargé pendant une exécution de flux de travail.\n\nLorsque l’action de téléchargement d’artefact est ensuite utilisée pour télécharger cet artefact, elle calcule automatiquement la synthèse de cet artefact téléchargé et vérifie qu’elle correspond à la sortie de l’étape upload-artifact.\n\nSi la synthèse ne correspond pas, l’exécution affichera un avertissement dans l’interface utilisateur et dans les journaux de tâches.\n\nPour afficher la synthèse SHA256, ouvrez les journaux de la tâche upload-artifact ou consultez la sortie Artifact qui apparaît dans l’interface utilisateur d’exécution du flux de travail."}