Est-il possible d'invalider ou d'effacer un cache de pipeline avec Gitlab CI après la fin d'un pipeline?
Mon fichier .gitlab-ci.yml
a la définition de cache globale suivante
cache:
key: "%CI_PIPELINE_ID%"
paths:
- './msvc/Project1`/bin/Debug'
- './msvc/Project2`/bin/Debug'
- './msvc/Project3`/bin/Debug'
La valeur cache-key
spécifie que chaque pipeline doit conserver son propre cache, qui fonctionne correctement, mais le fichier de cache continue d'exister une fois le pipeline terminé. Avec des centaines de pipelines en cours d'exécution, la taille commence à s'additionner et la suppression manuelle du dossier de cache sur notre machine n'est pas une bonne solution.
J'ai essayé d'ajouter un travail de nettoyage à la fin du pipeline
cleanup:
stage: cleanup
script:
- rm -rf './msvc/Project1/bin'
- rm -rf './msvc/Project2/bin'
- rm -rf './msvc/Project3/bin'
when: always
qui supprime les fichiers locaux, mais ne les supprime pas du cache.
Est-ce que j'ai râté quelque chose?
Exécute actuellement Gitlab-EE 10.3.3
Ce n'est pas une solution parfaite, mais nous avons fini par créer un travail de nettoyage à la fin de notre fichier .gitlab-ci.yaml
qui supprime le répertoire de cache du système de fichiers.
De cette manière, chaque pipeline obtient son propre cache unique, sans encombrer le système de fichiers au fil du temps.
cleanup_job:
stage: cleanup
script:
- echo "Cleaning up"
- rm -rf "%CACHE_PATH%/%CI_PIPELINE_ID%"
when: always
où
CACHE_PATH: "C:/gitlab-runner/cache/group/project/repo/"
Citation de @ayufan, l'un des maîtres de projet de Gitlab:
Le cache est stocké dans
/home/gitlab-runner/cache
ou en tant que conteneur de dockerdocker ps | grep -cache-
.
Par conséquent, vous pouvez essayer de supprimer le répertoire et de purger tous les conteneurs Docker renvoyés.