web-dev-qa-db-fra.com

Gitlab-Ci: Comment partager des données entre les jobs

Je souhaite partager un fichier entre deux tâches et le modifier s'il y a des fichiers modifiés. Le script python compare le cache.json fichier avec des changements et modifier le fichier cahce parfois.

.gitlab-ci.yaml:

image: ubuntu

stages:
  - test

cache:
  key: one-cache
  paths:
    - cache.json

 job1:
   stage: test

script:
  # - touch cache.json
  - cat cache.json
  - python3 modify_json_file.py
  - cat cache.json

Le problème est que ce cache.json le fichier n'existe pas lors de la prochaine exécution du travail. Je reçois le message d'erreur: cat: cache.json: No such file or directory. J'ai également inséré une fois la commande tactile, mais cela ne change rien pour la prochaine exécution sans la commande tactile.

Dois-je quelque chose de mal ou ne comprends-je pas le cache de gitlab?.

7
test42

Je pense que vous avez besoin d'artefacts et non de cache.

De cache vs artefact :

cache - À utiliser pour le stockage temporaire des dépendances du projet. Pas utile pour conserver les résultats de construction intermédiaires, comme les fichiers jar ou apk. Le cache a été conçu pour être utilisé pour accélérer les appels des exécutions suivantes d'un travail donné, en conservant des éléments tels que les dépendances (par exemple, les packages npm, les packages du fournisseur Go, etc.) afin qu'ils n'aient pas à être récupérés à nouveau auprès du public. l'Internet. Bien que le cache puisse être utilisé abusivement pour transmettre des résultats de construction intermédiaires entre les étapes, il peut y avoir des cas où les artefacts sont mieux adaptés.

artefacts - À utiliser pour les résultats d'étape qui seront transmis entre les étapes. Les artefacts ont été conçus pour télécharger des bits compilés/générés de la construction, et ils peuvent être récupérés par un nombre illimité de Runners. Ils sont garantis disponibles et sont là pour transmettre des données entre les travaux. Ils sont également exposés pour être téléchargés à partir de l'interface utilisateur.

10
Ekans