J'utilise un fichier conda.lock pour installer les dépendances. Je me demandais s'il y avait un moyen de le mettre en cache. Actuellement, il semble que la mise en cache régulière ne semble pas fonctionner pour cela.
Hm... j'utilise beaucoup de fichiers de verrouillage et la mise en cache fonctionne sous Linux et OSX :
Cela ne fonctionne pas sur Windows, et même si cela me rend triste, cela ne me surprend pas non plus.
Si vous avez des liens vers le référentiel en question, ou des journaux, ou toute information supplémentaire que vous pourriez fournir autre que "ne fonctionne pas", cela pourrait aider !
Merci @bollwyvl pour votre réponse rapide.
Désolé de ne pas avoir fourni plus de détails plus tôt. J'expérimente sur un dépôt de jouets, vous pouvez trouver un journal récent ici :
https://github.com/ma-sadeghi/xyztest/runs/1534789528?check_suite_focus=true
La taille du cache est d'environ 0 Mo.
PS. Je n'utilise pas setup-miniconda
pour ce dépôt, j'essayais de le faire fonctionner avec le conda
intégré sur les machines CI.
@bollwyvl
En regardant votre fichier yml
en fouillant un peu dans setup-miniconda
, il s'est avéré que je faisais tout un tas de choses mal. Le dossier de cache ( ~/conda_pkgs_dir
) était inexistant, j'ai donc dû le créer manuellement, de plus, je ne définissais pas la variable d'environnement CONDA_PKGS_DIRS
pour pointer vers ~/conda_pkgs_dir
. Voici l'itération la plus récente :
https://github.com/ma-sadeghi/xyztest/runs/1535236467?check_suite_focus=true
ce qui semble que la mise en cache fonctionne correctement et que l'étape "installer les dépendances" est maintenant beaucoup plus rapide.
Merci pour la perspicacité.
Huzzah ! Cache pour tout le monde !
Notez que la mise en cache de l'intégralité du dossier ne fonctionnera pas aussi bien qu'elle le pourrait, car
le cache contient à la fois les archives _et_ le contenu décompressé... Dans notre
après l'étape étape nous (essayons) de nettoyer une partie de cela.
N'hésitez pas à fermer s'il n'y a rien d'autre cassé...
n'impliquait pas cette action.
@bollwyvl Désolé, je sais que cela sort du cadre de ce référentiel, mais puis-je vous demander ce que vous faites exactement pour optimiser la mise en cache ? De quels fichiers vous débarrassez-vous ? le contenu déballé ou les tarballs ?
Ouais c'est à peu près la taille de celui-ci:
https://github.com/conda-incubator/setup-miniconda/blob/master/src/delete.ts
Il y a d'autres trucs là-dedans aussi, mais c'est des trucs piquants en comparaison
à, disons, mkl ou qt déballé.
@bollwyvl Question rapide : en regardant delete.ts
, il semble que vous supprimez les dossiers non compressés, plutôt que les fichiers compressés .tar.bz2
. Il me manque probablement quelque chose, mais il semble qu'en faisant cela, conda doive faire une étape supplémentaire de "décompression", alors que si .tar.bz2
sont supprimés, conda
peut simplement réutiliser le déjà décompressé Dossiers. Je l'ai essayé sur mon ordinateur et il semble que ce dernier a conduit à des installations plus rapides.
Je pense que tu pourrais aussi nettoyer la conda. @bollwyvl peut-être que nous pourrions l'utiliser au lieu de delete.ts
, je l'ai fait comme ça parce que je n'étais pas au courant de conda clean à ce moment-là.
$ conda clean --help
usage: conda clean [-h] [-a] [-i] [-p] [-t] [-f]
[-c TEMPFILES [TEMPFILES ...]] [-d] [--json] [-q] [-v] [-y]
Remove unused packages and caches.
Options:
optional arguments:
-h, --help Show this help message and exit.
Removal Targets:
-a, --all Remove index cache, lock files, unused cache packages,
and tarballs.
-i, --index-cache Remove index cache.
-p, --packages Remove unused packages from writable package caches.
WARNING: This does not check for packages installed
using symlinks back to the package cache.
-t, --tarballs Remove cached package tarballs.
-f, --force-pkgs-dirs
Remove *all* writable package caches. This option is
not included with the --all flag. WARNING: This will
break environments with packages installed using
symlinks back to the package cache.
-c TEMPFILES [TEMPFILES ...], --tempfiles TEMPFILES [TEMPFILES ...]
Remove temporary files that could not be deleted
earlier due to being in-use. Argument is path(s) to
prefix(es) where files should be found and removed.
Output, Prompt, and Flow Control Options:
-d, --dry-run Only display what would have been done.
--json Report all output as json. Suitable for using conda
programmatically.
-q, --quiet Do not display progress bar.
-v, --verbose Can be used multiple times. Once for INFO, twice for
DEBUG, three times for TRACE.
-y, --yes Do not ask for confirmation.
Examples:
conda clean --tarballs
Quelques idées supplémentaires pour une cache plus petite :