Héc*_*tor 5 environment-variables bazel
我正在尝试使用以下代码构建 Docker 映像:
container_image(
name = "docker_image",
base = "@java_base//image",
files = [":executable_deploy.jar"],
cmd = ["java", "-jar", "executable_deploy.jar"],
env = { "VERSION" : "$(VERSION)" }
)
Run Code Online (Sandbox Code Playgroud)
我想将一个变量传递给构建的目标,以便可以在 $(VERSION) 中替换它。这可能吗?
我尝试过VERSION=1.0.0 bazel build :docker_image,但出现错误:
$(VERSION) 未定义。
我怎样才能传递这个变量?
根据文档:
该字段(env)的值支持 make 变量(例如 $(FOO))和 stamp 变量;键也支持 make 变量。但我不明白这到底是什么意思。
这些变量可以通过标志来设置--define。
rules_docker 页面上有一个关于标记的部分涵盖了这一点。
本质上你可以做类似的事情:
bazel build --define=VERSION=1.0.0 //:docker_image
还可以从stable-status.txt和volatile-status.txt文件中获取这些键/值对。bazel 的用户手册页显示了如何使用这些文件,以及如何--workspace_status_command填充它们。
要设置默认值,您可以使用一个.bazelrc文件,其内容如下所示:
build --define=VERSION=0.0.0-PLACEHOLDER
Run Code Online (Sandbox Code Playgroud)
命令行上传递的标志将优先于 .bazelrc 文件中的标志。
值得一提的是,更改define值将导致 bazel 再次分析所有内容,这可能需要一些时间,具体取决于图表,但只会执行受影响的操作。
| 归档时间: |
|
| 查看次数: |
12226 次 |
| 最近记录: |