Prérequis
Avant de pouvoir terminer ce tutoriel, vous devez comprendre les artefacts du flux de travail. Consultez « Artefacts de workflow ».
Chargement d’artefacts de build et de test
La 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.
Vous 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.
Exemple
Par 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.
|-- hello-world (repository)
| └── dist
| └── tests
| └── src
| └── sass/app.scss
| └── app.ts
| └── output
| └── test
|
Cet 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/.
Le 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.
name: Node CI
on: [push]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: dist-without-markdown
path: |
dist
!dist/**/*.md
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage-report
path: output/test/code-coverage.html
name: Node CI
on: [push]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: dist-without-markdown
path: |
dist
!dist/**/*.md
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage-report
path: output/test/code-coverage.html
Configuration d’une période de conservation des artefacts personnalisée
Vous 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 :
- name: 'Upload Artifact'
uses: actions/upload-artifact@v4
with:
name: my-artifact
path: my_file.txt
retention-days: 5
- name: 'Upload Artifact'
uses: actions/upload-artifact@v4
with:
name: my-artifact
path: my_file.txt
retention-days: 5
La valeur retention-days ne peut pas dépasser la limite de conservation définie par le dépôt, l’organisation ou l’entreprise.
Téléchargement d’artefacts pendant l’exécution d’un workflow
Vous pouvez utiliser l’action 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.
Remarque
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 dans la documentation de l’action download-artifact.
Spé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.
- name: Download a single artifact
uses: actions/download-artifact@v5
with:
name: my-artifact
Vous 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.
- name: Download all workflow run artifacts
uses: actions/download-artifact@v5
Si 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.
Pour plus d’informations sur la syntaxe, consultez l’action actions/download-artifact.
Passage de données entre les travaux d’un flux de travail
Vous 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 et download-artifact.
Les 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.
Job 1 effectue les étapes suivantes :
- Effectue un calcul mathématique et enregistre le résultat dans un fichier texte appelé
math-homework.txt. - Utilise l’action
upload-artifactpour charger le fichiermath-homework.txtavec le nom de l’artefacthomework_pre.
Job 2 utilise le résultat du travail précédent :
- Télécharge l’artefact
homework_prechargé lors de la tâche précédente. Par défaut, l’actiondownload-artifactté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éepathpour spécifier un autre répertoire de téléchargement. - Lit la valeur dans le fichier
math-homework.txt, effectue un calcul mathématique, puis enregistre à nouveau le résultat dansmath-homework.txt, en remplaçant son contenu. - Charge le fichier
math-homework.txt. Comme les artefacts sont considérés comme immuables dansv4, l’artefact reçoit une autre entrée,homework_finalen tant que nom.
Job 3 affiche le résultat téléchargé depuis le travail précédent :
- Télécharge l’artefact
homework_finalà partir de l’artefact Job 2. - Imprime le résultat de l’équation mathématique dans le journal de bord.
L’opération mathématique complète effectuée dans cet exemple de workflow est (3 + 7) x 9 = 90.
name: Share data between jobs
on: [push]
jobs:
job_1:
name: Add 3 and 7
runs-on: ubuntu-latest
steps:
- shell: bash
run: |
expr 3 + 7 > math-homework.txt
- name: Upload math result for job 1
uses: actions/upload-artifact@v4
with:
name: homework_pre
path: math-homework.txt
job_2:
name: Multiply by 9
needs: job_1
runs-on: windows-latest
steps:
- name: Download math result for job 1
uses: actions/download-artifact@v5
with:
name: homework_pre
- shell: bash
run: |
value=`cat math-homework.txt`
expr $value \* 9 > math-homework.txt
- name: Upload math result for job 2
uses: actions/upload-artifact@v4
with:
name: homework_final
path: math-homework.txt
job_3:
name: Display results
needs: job_2
runs-on: macOS-latest
steps:
- name: Download math result for job 2
uses: actions/download-artifact@v5
with:
name: homework_final
- name: Print the final result
shell: bash
run: |
value=`cat math-homework.txt`
echo The result is $value
name: Share data between jobs
on: [push]
jobs:
job_1:
name: Add 3 and 7
runs-on: ubuntu-latest
steps:
- shell: bash
run: |
expr 3 + 7 > math-homework.txt
- name: Upload math result for job 1
uses: actions/upload-artifact@v4
with:
name: homework_pre
path: math-homework.txt
job_2:
name: Multiply by 9
needs: job_1
runs-on: windows-latest
steps:
- name: Download math result for job 1
uses: actions/download-artifact@v5
with:
name: homework_pre
- shell: bash
run: |
value=`cat math-homework.txt`
expr $value \* 9 > math-homework.txt
- name: Upload math result for job 2
uses: actions/upload-artifact@v4
with:
name: homework_final
path: math-homework.txt
job_3:
name: Display results
needs: job_2
runs-on: macOS-latest
steps:
- name: Download math result for job 2
uses: actions/download-artifact@v5
with:
name: homework_final
- name: Print the final result
shell: bash
run: |
value=`cat math-homework.txt`
echo The result is $value
L’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 ».
Validation des artefacts
Chaque 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.
Lorsque 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.
Si la synthèse ne correspond pas, l’exécution affichera un avertissement dans l’interface utilisateur et dans les journaux de tâches.
Pour 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.