如何在 Bazel 中强制重建包以测量构建时间

Vog*_*ang 5 bazel

我目前正在尝试测量bazel build //api/...使用不同的--spawn_strategys构建我们的“api”项目所需的时间。我很难这样做,因为只要我不接触源文件,Bazel 就不会重建任何东西。

我能够通过编辑“api”项目中的所有文件来强制重建,但重复执行此操作很麻烦。

强制 Bazel 重建以便我可以测量存储库的构建时间的最佳方法是什么?

最好,我想使用类似bazel build //api/... --some_option_which_forces_rebuilding或类似的东西。

dms*_*dms 8

有点脏,但您可以--action_env用来更改构建环境并使所有操作无效。从文档

环境变量被认为是操作的重要组成部分。换句话说,如果一个动作被调用的环境不同,它会产生不同的输出;特别是,如果有效环境发生变化,则不能采用先前缓存的值。

也(从这个页面):

[...] 可以使用 --action_env 标志从命令行强制执行这些环境变量的值(但此标志将使构建的每个操作无效)。

只需设置一个随机变量就足够了:

> bazel build --action_env="avariable=1" :mytarget
> bazel build --action_env="avariable=2" :mytarget
> ...
Run Code Online (Sandbox Code Playgroud)

  • 我决定使用以下风格来进行重建;)`--action_env=SHIT=$(date -Ins)` (3认同)