Bazel缓存、远程执行和glibc版本不兼容导致生产环境崩溃

2025-09-21
Bazel缓存、远程执行和glibc版本不兼容导致生产环境崩溃

本文讲述了一个由于Bazel缓存、远程执行和不同环境中glibc版本差异导致生产环境崩溃的案例。开发人员在本地构建和测试通过后,CI系统利用缓存构建发布版本,但在生产环境部署时却因缺少'GLIBC_2.28'版本而崩溃。文章分析了glibc版本差异如何破坏构建可重复性,并提出了几种解决方案:一种临时方案是捕获本地和远程glibc版本,选择较高版本作为C++工具链输入;更完善的方案是限制对Action缓存的写入,强制构建操作始终在远程执行器上运行;最终的解决方案是使用sysroots,在所有环境中安装多个glibc版本,并明确指定使用哪个版本。文章强调了保证构建可重复性的重要性,并建议根据实际情况选择合适的解决方案。

开发