Un cache de compilation dédié est utile lorsque les mêmes dépôts sont compilés sur un ordinateur portable, un ordinateur de bureau, un exécuteur CI ou des plateformes aux processeurs différents, et que les tâches répétées coûtent plus cher que le transfert et la maintenance du cache.
Le cache doit rester une optimisation, et non la source de vérité. Les compilations doivent quand même réussir en cas d’absence dans le cache, tandis que les clés de cache, les limites de confiance, les quotas et le nettoyage des anciennes entrées empêchent un appareil d’empoisonner le service partagé ou de saturer son espace.
Mesurer les tâches répétées sur plusieurs appareils
Consignez les téléchargements de dépendances, les couches de conteneur, les objets compilés, les ressources générées et le temps total de compilation sur chaque appareil. Comptez la fréquence à laquelle les mêmes entrées sont recompilées après un changement de machine ou le lancement d’une tâche CI éphémère.
Un guide pratique sur le cache distant de Bazel explique comment plusieurs machines peuvent réutiliser des artefacts au lieu de reconstruire indépendamment des entrées identiques.
Un cache dédié se justifie lorsque les tâches sont souvent répétées, que les artefacts sont déterministes et que le transfert prend moins de temps que le recalcul. Il apporte peu de valeur lorsque les projets sont petits ou que les appareils partagent rarement des entrées.
Définir les clés de cache et les limites de confiance
Les clés doivent inclure les entrées source, les fichiers de verrouillage des dépendances, la version du compilateur ou de l’environnement d’exécution, l’architecture cible, les principaux indicateurs d’environnement et l’étape de compilation. Une clé trop générique entraîne de fausses correspondances ; une clé trop précise ne permet aucune réutilisation.
Accordez un accès en écriture aux tâches CI de confiance et envisagez un accès en lecture seule pour les machines des développeurs ou les branches non fiables. Une entrée de cache peut contenir du code exécutable ; accepter des écritures provenant de code arbitraire constitue donc une décision qui touche à la sécurité de la chaîne d’approvisionnement.
Architectures et générations de chaînes d’outils distinctes. Un ordinateur portable Apple Silicon et un exécuteur Linux x86 peuvent partager les paquets source téléchargés, tout en nécessitant des artefacts compilés différents.
Placez le cache à proximité des opérations coûteuses
| Emplacement du cache | Atout | Limite |
|---|---|---|
| Local à chaque appareil | Latence minimale | Aucune réutilisation entre appareils |
| Serveur de cache sur le réseau local | Réutilisation rapide à domicile | Indisponible en déplacement |
| Registre ou stockage d’objets | Fonctionne sur plusieurs sites | Surcoût de téléversement et de sortie |
| Hôte de compilation distant | Le cache reste à proximité du calcul | Devient une infrastructure d’exécution |
| Hybride, local et partagé | Des accès rapides au cache et une réutilisation étendue | Plus de règles à maintenir |
Pour un usage domestique, gardez un petit cache local sur chaque appareil et un cache partagé plus volumineux sur le serveur. Les développeurs à distance ne peuvent utiliser la couche partagée que si le débit réseau permet de gagner du temps par rapport à une nouvelle compilation.
N’installez pas le cache sur les partages familiaux protégés ni sur les cibles de sauvegarde. Une forte rotation des données et leur suppression automatique doivent être gérées dans un jeu de données dédié, avec son propre quota.
Gérez les quotas, le ramasse-miettes et les échecs de cache
Définissez une taille maximale, des seuils haut et bas, un âge maximal et une politique pour les entrées volumineuses. Suivez le taux de réussite, les octets transférés, le temps de compilation économisé, le taux d’éviction et le temps consacré à la recherche dans le cache.
Un compte rendu opérationnel sur l’exécution d’une infrastructure de compilation à distance indique que les disques de cache peuvent se remplir plus vite que le ramasse-miettes ne les libère et que la latence réseau en queue peut annuler les gains moyens.
En cas d’indisponibilité du cache, laissez la compilation se poursuivre : elle doit recalculer les éléments plutôt que s’arrêter. Restaurez le service à partir de sa configuration et laissez les entrées se reconstituer, sauf si un cache spécifique contient des données de provenance irremplaçables.
Définissez une limite pour décider d’utiliser le cache ou d’arrêter
Déployez un cache dédié lorsqu’au moins deux appareils recompilent les mêmes entrées coûteuses, que le taux de réussite est mesurable et qu’une politique d’écriture fiable peut être appliquée. Commencez par une seule chaîne d’outils plutôt que de mettre en cache tous les gestionnaires de paquets d’un coup.
Séparez les services de cache lorsque les projets ont des exigences différentes en matière de confiance, de conservation ou de schémas d’E/S. Augmentez la capacité SSD lorsque l’éviction supprime des artefacts fréquemment utilisés ; augmentez la capacité réseau uniquement lorsque les transferts, et non les recherches ou la compilation, constituent le goulot d’étranglement mesuré. Le workflow de test SMB pour les petits fichiers peut aider à repérer les limites des transferts sollicitant fortement les métadonnées.
Arrêtez d’agrandir le cache si le taux de réussite reste faible ou si les incidents d’invalidation coûtent plus cher que le temps gagné sur les compilations. Un échec de cache propre coûte moins cher qu’un artefact rapide mais erroné.
Règle finale de configuration
La configuration est validée lorsque chaque service a un rôle défini, un état protégé, un chemin d’accès contrôlé, une restauration testée et un seuil mesurable pour fractionner ou étendre la topologie.
Configuration de NAS et de serveur
À lire aussi

Un serveur de dortoir peut-il fonctionner assez silencieusement pour dormir, étudier et passer des appels vidéo ?
Oui, un serveur dans une chambre universitaire peut rester discret si le matériel consomme peu, si les vibrations des disques de stockage sont maîtrisées,...

Un homelab étudiant qui passe de la chambre universitaire au premier appartement
Gardez un homelab étudiant portable en séparant les services du réseau propre à chaque pièce, en réduisant le matériel au minimum, en sauvegardant son...

Comment partager un serveur domestique avec des colocataires sans partager de comptes ni de fichiers privés
Attribuez à chaque colocataire une identité nominative, un espace de stockage privé et uniquement les rôles partagés dont il a besoin ; séparez l’administration,...



