Le cache Bazel, l'exécution distante et l'incompatibilité de version de glibc provoquent un plantage en production

Cet article détaille un plantage en production causé par l'interaction entre le cache Bazel, l'exécution distante et les différentes versions de glibc dans différents environnements. Un développeur compile et teste un changement localement, le CI utilise le cache pour compiler une version de production, mais le déploiement en production échoue en raison de l'absence de la version 'GLIBC_2.28'. L'article analyse comment les différences de version de glibc brisent la reproductibilité de la compilation et présente des solutions : une solution rapide consiste à capturer les versions locales et distantes de glibc, en sélectionnant la plus élevée pour la chaîne d'outils C++ ; une solution plus robuste restreint les écritures dans le cache d'action, forçant les compilations à s'exécuter sur des exécuteurs distants ; la solution ultime utilise les sysroots, en installant plusieurs versions de glibc dans tous les environnements et en spécifiant explicitement celle à utiliser. L'article souligne l'importance des compilations reproductibles, en recommandant des solutions en fonction du contexte.