Bazelキャッシュ、リモート実行、glibcバージョン不一致が本番環境でクラッシュを引き起こす
2025-09-21

この記事では、Bazelキャッシュ、リモート実行、そして異なる環境でのglibcバージョンの違いが相互作用して本番環境でクラッシュが発生した事例について説明します。開発者はローカルで変更をビルドしてテストし、CIはキャッシュを利用してリリースビルドを作成しますが、本番環境へのデプロイは 'GLIBC_2.28' バージョンがないために失敗します。この記事では、glibcバージョンの不一致がどのようにビルドの再現性を損なうかを分析し、いくつかの解決策を提示します。簡単な回避策としては、ローカルとリモートのglibcバージョンを取得し、C++ツールチェーンに高い方のバージョンを使用する方法があります。より堅牢な解決策としては、アクションキャッシュへの書き込みを制限し、ビルドをリモートエグゼキュータで強制的に実行する方法があります。究極の解決策は、sysrootsを使用し、すべての環境に複数のglibcバージョンをインストールし、使用するバージョンを明示的に指定する方法です。この記事では、再現可能なビルドの重要性を強調し、状況に応じて適切な解決策を選択することを推奨しています。
開発
ビルドの再現性