构建时如何让 bazel 使用外部存储?

How can I make bazel use external storage when building?

使用 bazel 构建某些代码时,我 运行 存储空间不足 space。我希望 bazel 将其内容存储在 USB 驱动器上,而不是我的 ~/.cache 文件夹中。我怎样才能告诉 bazel 这样做?

您可以通过更改 $TEST_TMPDIR 变量来更改 outputRoot 目录。

export TEST_TMPDIR=/path/to/directory

来自the bazel docs

The outputRoot directory is ~/.cache/bazel. (Unless $TEST_TMPDIR is set, as in a test of bazel itself, in which case this directory is used instead.)

使用 --output_user_root 标志。

示例:

bazel --output_user_root=/path/to/directory build //foo:bar

我将 ~/.cache/bazel 符号链接到另一个驱动器上的目录。看起来到目前为止工作。即

ln -s /mnt/otherdrive/bazel_cache ~/.cache/bazel

我想移动旧缓存以避免重建,但我注意到缓存中目录的符号链接并且不想处理传输这些内容,所以它们也指向新目录。所以我只是删除了旧的缓存,符号链接,然后重建。