DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesGitHub Actions : multi-jobs, artefacts et workflows réutilisables02 - Partager des fichiers avec les artefacts

Détails

  • 20 minutes
  • Intermédiaire

Objectifs

  • Uploader un artefact depuis un job avec actions/upload-artifact@v4
  • Télécharger un artefact dans un job suivant avec actions/download-artifact@v4
  • Configurer la rétention des artefacts
  • Conserver les artefacts même en cas d'échec du pipeline
Module GitHub Actions : multi-jobs, artefacts et workflows réutilisables

Exercice 02 : Partager des fichiers avec les artefacts

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Générer un fichier dans un job et l'uploader comme artefact
  • ✅ Télécharger l'artefact dans un job suivant pour l'utiliser
  • ✅ Configurer retention-days pour contrôler la durée de stockage
  • ✅ Utiliser if: always() pour uploader même si le job échoue

Durée estimée : 20 min | Difficulté : ⭐⭐☆☆☆


📖 Contexte

Chaque job GitHub Actions tourne sur une machine virtuelle indépendante. Un fichier créé dans le job test n'est pas automatiquement accessible dans le job deploy. Les artefacts sont le mécanisme prévu pour partager des fichiers entre jobs (ou les rendre téléchargeables depuis l'interface).

Cas d'usage courants : rapports de tests, binaires compilés, fichiers de couverture de code.


📋 Énoncé

Vous allez créer un pipeline en deux jobs : build génère un rapport JSON et l'uploade comme artefact, puis report télécharge ce rapport et affiche son contenu.

Résultat attendu :

  • Un artefact build-report visible dans l'interface GitHub Actions
  • Le job report affiche le contenu du fichier téléchargé

🧭 Déroulement

Tâche 1 : Générer un fichier dans le job build

Créez un job build qui génère un fichier rapport.json contenant {"status": "success", "tests": 42}. Utilisez un here-doc ou echo pour l'écrire.

Indice :

`yaml

- name: Générer le rapport

run: |

mkdir -p dist

echo '{"status":"success","tests":42}' > dist/rapport.json

`

Vérification : La commande cat dist/rapport.json dans le step suivant affiche le JSON.


Tâche 2 : Uploader l'artefact

Après la génération du fichier, ajoutez un step qui uploade le dossier dist/ comme artefact nommé build-report avec une rétention de 7 jours.

Indice :

`yaml

- name: Upload artefact

uses: actions/upload-artifact@v4

with:

name: build-report

path: dist/

retention-days: 7

`

path: peut être un dossier ou un pattern glob (dist/*.json).

Vérification : Dans le résumé du run, un encadré "Artifacts" liste build-report.


Tâche 3 : Télécharger l'artefact dans un second job

Ajoutez un job report qui dépend de build. Ce job doit télécharger l'artefact build-report et afficher le contenu du fichier JSON.

Indice :

`yaml

report:

runs-on: ubuntu-latest

needs: build

steps:

- uses: actions/download-artifact@v4

with:

name: build-report

- run: cat rapport.json

`

Par défaut, download-artifact restaure les fichiers dans le répertoire courant.

Vérification : Les logs du job report affichent {"status":"success","tests":42}.


Tâche 4 : Upload conditionnel avec if: always()

Modifiez le step d'upload dans build pour qu'il s'exécute même si un step précédent a échoué. Ajoutez if: always() sur ce step.

Indice : Sans if: always(), si un step échoue, les steps suivants sont sautés par défaut. Pour un rapport de tests, on veut toujours uploader même en cas d'échec, pour diagnostiquer le problème.

Vérification : En forçant un step à échouer (run: exit 1), l'artefact est quand même uploadé et visible dans l'interface.


Tâche 5 : Télécharger plusieurs artefacts

Modifiez le job report pour qu'il télécharge l'artefact dans un sous-dossier nommé resultats/ en utilisant l'option path: de download-artifact.

Indice :

`yaml

- uses: actions/download-artifact@v4

with:

name: build-report

path: resultats/

- run: cat resultats/rapport.json

`

Vérification : La commande ls resultats/ dans les logs affiche rapport.json.


🗂️ Mini-Projet : Pipeline build → test → archive

Créez un pipeline qui génère un binaire simulé, le teste, puis l'archive :

yaml
# Checkpoints à valider :
# [ ] Le job build génère dist/rapport.json
# [ ] actions/upload-artifact@v4 uploade le dossier dist/
# [ ] L'artefact est visible dans l'interface Actions après le run
# [ ] Le job report télécharge l'artefact avec download-artifact@v4
# [ ] if: always() est présent sur le step d'upload
# [ ] Bonus : utilisez path: pour restaurer dans un sous-dossier

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement
  • Tâche 1 : Générer un fichier dans le job build
  • Tâche 2 : Uploader l'artefact
  • Tâche 3 : Télécharger l'artefact dans un second job
  • Tâche 4 : Upload conditionnel avec if: always()
  • Tâche 5 : Télécharger plusieurs artefacts
  • 🗂️ Mini-Projet : Pipeline build → test → archive