Cache et artefacts
Deux mécanismes distincts, souvent confondus, aux effets très différents.
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