Bazel-Caching, Remote Execution und glibc-Versionskonflikt führen zu Produktionsabsturz

2025-09-21
Bazel-Caching, Remote Execution und glibc-Versionskonflikt führen zu Produktionsabsturz

Dieser Artikel beschreibt einen Produktionsabsturz, verursacht durch die Interaktion von Bazel-Caching, Remote Execution und unterschiedlichen glibc-Versionen in verschiedenen Umgebungen. Ein Entwickler baut und testet eine Änderung lokal, CI nutzt den Cache zum Erstellen eines Release-Builds, aber die Bereitstellung in der Produktion schlägt aufgrund einer fehlenden 'GLIBC_2.28'-Version fehl. Der Artikel analysiert, wie glibc-Versionsunterschiede die Reproduzierbarkeit von Builds beeinträchtigen und präsentiert Lösungen: Ein schneller Hack beinhaltet das Erfassen lokaler und entfernter glibc-Versionen und die Auswahl der höheren Version für die C++-Toolchain; eine robustere Lösung beschränkt das Schreiben in den Action-Cache und erzwingt Builds auf Remote-Executors; die ultimative Lösung verwendet Sysroots, installiert mehrere glibc-Versionen in allen Umgebungen und gibt explizit an, welche zu verwenden ist. Der Artikel betont die Wichtigkeit reproduzierbarer Builds und empfiehlt Lösungen je nach Kontext.