Il existe deux manière dans gitlab de stocker des fichiers et de les partager entre runners.
- Cache
- Et les artefacts
- Utilisez le cache pour les dépendances, comme les packages que vous téléchargez sur Internet. Le cache est stocké là où GitLab Runner est installé.
- Utilisez des artefacts pour transmettre les résultats de construction intermédiaires entre les étapes. Les artefacts sont générés par une tâche, stockés dans GitLab et peuvent être téléchargés.
- Durée de Vie : Le cache persiste sur le runner entre les exécutions de jobs, tandis que les artefacts ne sont disponibles que pour la durée d'un pipeline.
Les artefacts et les caches définissent leurs chemins par rapport au répertoire du projet et ne peuvent pas créer de lien vers des fichiers extérieurs à celui-ci.
Le cache est utilisé pour stocker des fichiers ou des répertoires spécifiés afin de les réutiliser entre différentes exécutions de jobs sur le même runner. Il s'agit d'une optimisation pour éviter de re-télécharger ou recréer des dépendances courantes.
job:
script:
- npm install
cache:
key: "$CI_COMMIT_REF_NAME-$CI_JOB_NAME"
paths:
- node_modules/
Les artefacts sont utilisés pour stocker des fichiers ou des répertoires produits pendant l'exécution d'un job. Ces fichiers sont généralement les résultats de processus de construction, de tests, ou d'autres étapes du pipeline.
stages:
- build
job_build:
stage: build
script:
- npm run build
artifacts:
paths:
- dist/
Options des artifacts :
* expire_in : temps de conservation
* untracked : ajout des fichiers untracked à votre artifact
* exclude : exclure certains fichiers
* paths : répertoire complet
* expose_as : mettre à disposition dans les MR
* name : nom associé (stratégie comme cache)
Exemple d'un artefact qui a durée de vie de 1min :
job1:
script:
- echo "Hello Das" > file.txt
artifacts:
paths:
- file.txt
expire_in: 1m
À noter que les artitacts sont téléchargeables alors que le cache ne l'est pas.