[译] 用 Git Bisect 排查 Bazel 构建问题
原文:Troubleshooting Bazel with Git Bisect 作者:Son Luong Ngoc · 原文发表于 2025-02-18。 译注:文中的“我们”指原作者或 BuildBuddy 团队,时效性表述以原文发布日期为准。Bazel 专有名词保留英文,代码和命令未作翻译。 译注:本文保留 2025 年 2 月使用 Bazel 8.0.1、8.1.0 和 rules_go 排查回归的案例。版本号、commit 和日志均是当时的记录,用来演示二分定位方法。 升级 Bazel 和相关依赖项有时会导致意外问题。这些问题的范围从 构建 故障到运行时错误,而且通常很难排除故障。 今天我们来看看,依赖升级后出现 构建 失败,如何用 git bisect 找出根因。 升级 Bazel 后 构建 失败 如果您像我一样,您会喜欢在项目中拥有最新、最好的工具。而我使用最多的工具是Bazel,所以随着最近8.1.0版本的发布,我决定升级我们的BuildBuddy repository来使用它。 $ echo '8.1.0' > .bazelversion $ bazel test --config=remote-minimal //... ... ERROR: /root/workspace/output-base/external/bazel_tools/tools/build_defs/repo/http.bzl:137:45: An error occurred during the fetch of repository 'rules_cc+': Traceback (most recent call last): File "/root/workspace/output-base/external/bazel_tools/tools/build_defs/repo/http.bzl", line 137, column 45, in _http_archive_impl download_info = ctx.download_and_extract( Error in download_and_extract: com.google.devtools.build.lib.remote.common.CacheNotFoundException: Missing digest: abc605dd850f813bb37004b77db20106a19311a96b2da1c92b789da529d28fe1/178823 ... 哎呀!将 Bazel 升级到 8.1.0 后,构建 似乎失败了。返回到 8.0.1 问题就消失了,这意味着问题是在 Bazel 8.1.0 中引入的。 ...