Partie 1 · Aller plus loin
Artifacts, needs, dependencies et autres mots-clés
Artifacts
Les artéfacts permettent de sauvegarder les fichiers produits par un job. Ils peuvent être passés d'un job à l'autre, ajoutés à une release, téléchargés depuis la page de la pipeline. Si ce sont des rapports, GitLab sait les interpréter. Dans l'exemple du cours, paths garde les fichiers de build, et reports: junit fournit le rapport de tests :
gradle-build: stage: build-java script: ./gradlew build artifacts: paths: - build/libs gradle-test: stage: test-java script: ./gradlew test needs: ["gradle-build"] dependencies: ["gradle-build"] artifacts: reports: junit: "**/build/test-results/test/**/TEST-*.xml"
Vérifie que tu as compris
Dans l'exemple, quel job produit un rapport de tests que GitLab peut interpréter ?
Needs et dependencies
- needs spécifie les dépendances entre jobs et active l'exécution parallèle des stages : un job démarre dès que ceux dont il dépend ont fini, sans attendre tout le stage précédent.
- dependencies précise qu'un job doit récupérer les artéfacts d'un job dont il dépend. Si on ne précise rien, tous les artéfacts sont récupérés.
Dans l'exemple, gradle-test déclare needs: ["gradle-build"] et dependencies: ["gradle-build"] : il attend gradle-build et ne télécharge que ses artéfacts.
Vérifie que tu as compris
Que se passe-t-il si un job ne précise pas dependencies ?
Vérifie que tu as compris
Quel mot-clé sert à déclarer qu'un job dépend d'un autre et à permettre l'exécution parallèle des stages ?
Autres mots-clés cités
| Mot-clé | Rôle |
|---|---|
| cache | cache persistant d'une pipeline à l'autre |
| coverage | détection des rapports de couverture de test |
| environment | déclaration de l'environnement de déploiement |
| when | condition d'exécution |
| parallel | plusieurs instances du job en parallèle, avec des variables différentes |
| release | création d'une release |
| services | conteneur de service lancé en parallèle (ex. une base de données) |
| variables | variables d'environnement |
Vérifie que tu as compris
Quel mot-clé permet de lancer une base de données dans un conteneur parallèle au job ?