web-dev-qa-db-fra.com

Effacement du cache du pipeline avec Gitlab CI

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

4
Dan Q

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

CACHE_PATH: "C:/gitlab-runner/cache/group/project/repo/"
4
Dan Q

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 docker docker ps | grep -cache-

Par conséquent, vous pouvez essayer de supprimer le répertoire et de purger tous les conteneurs Docker renvoyés. 

0
secustor