La caché de Bazel, la ejecución remota y la falta de coincidencia de la versión de glibc provocan un fallo en la producción

Este artículo describe un fallo en la producción causado por la interacción entre la caché de Bazel, la ejecución remota y las diferentes versiones de glibc en diferentes entornos. Un desarrollador compila y prueba un cambio localmente, el CI aprovecha la caché para compilar una versión de lanzamiento, pero la implementación en producción falla debido a la ausencia de la versión 'GLIBC_2.28'. El artículo analiza cómo las discrepancias en la versión de glibc rompen la reproducibilidad de la compilación y presenta soluciones: un atajo rápido implica capturar las versiones locales y remotas de glibc, seleccionando la más alta para la cadena de herramientas de C++; una solución más robusta restringe las escrituras en la caché de acción, forzando las compilaciones a ejecutarse en ejecutores remotos; la solución definitiva utiliza sysroots, instalando varias versiones de glibc en todos los entornos y especificando explícitamente cuál usar. El artículo destaca la importancia de las compilaciones reproducibles, recomendando soluciones basadas en el contexto.