0%
Cache des dépendances et artefacts entre jobs

Cache et artefacts

Deux mécanismes distincts, souvent confondus, aux effets très différents.

10-15 min

Sur un projet JavaScript de taille moyenne, npm ci prend entre soixante et cent vingt secondes. Multipliez par le nombre de jobs de votre workflow, par le nombre de commits par jour, par le nombre de personnes dans l'équipe : c'est la principale dépense de temps d'une chaîne d'intégration continue, et elle ne vérifie rien. Elle retélécharge à chaque exécution des paquets qui n'ont pas changé depuis trois semaines.

Le cache et les artefacts répondent à deux besoins qu'on confond constamment. Le cache sert à ne pas refaire un travail dont le résultat est reconstructible : dépendances téléchargées, objets de compilation intermédiaires. Il est jetable par nature — si le cache disparaît, la chaîne fonctionne, simplement plus lentement. L'artefact sert à transporter un résultat qu'on veut conserver ou transmettre : un exécutable compilé, un rapport de tests, une capture d'écran d'un test qui a échoué. Utiliser un artefact comme cache produit des exécutions lentes et un stockage saturé ; utiliser un cache pour transporter un binaire produit des échecs intermittents, le jour où le cache est absent.

Commentaires

Les commentaires sont alimentés par GitHub Discussions

Connectez-vous avec GitHub pour participer à la discussion

Lien copié !