bazel - 读取 WORKSPACE 中的文件内容
问题描述
我container_pull
在我的 WORKSPACE 文件中使用。(它是bazel docker 规则的一部分)
如下所示:
container_pull(
name = "base-image",
registry = "registry:9999",
repository = "base-image",
digest = "sha256:e6f44554a270025c578c0f91160d809735c2589baae80bafcdeebefb0c0b04b6",
tag = "1.1.0"
)
但是,有一个包含 版本的文件base-image
,我希望从该文件中读取它,而不是在 WORKSPACE 中进行硬编码。
如何在 WORKSPACE 中读取文件内容?
解决方案
没有直接的方法可以从工作区文件中读取文件。该container_pull
规则必须添加对从文件读取的支持。
一种解决方法是将包含信息的文件放入.bzl
格式中,然后从工作区文件中加载该文件。
像这样的东西:
versions.bzl
:
BASE_IMAGE_VERSION = "1.1.0"
WORKSPACE
:
load("//:versions.bzl", "BASE_IMAGE_VERSION")
container_pull(
name = "base-image",
registry = "registry:9999",
repository = "base-image",
digest = "sha256:e6f44554a270025c578c0f91160d809735c2589baae80bafcdeebefb0c0b04b6",
tag = BASE_IMAGE_VERSION,
)
Bazel 在自己的工作区文件中做了类似的事情: https ://github.com/bazelbuild/bazel/blob/669a1a2634bdf267f890cf88833c9712d4e75016/WORKSPACE#L589
推荐阅读
- php - 无法测试数组元素的值,但可以打印它
- angularjs - 如何在 Y 轴上呈现,格式 hh: mm: ss Chart.js
- internet-explorer - 仅在 IE 中出现 Recaptcha v2 错误。'MessageChannel' 未定义
- php - Symfony 表单重定向到控制器而不是路由
- bash - 带有函数 / for 循环的 Bash Scipt
- php - S3 Flysystem 返回文件密钥,但 size 方法抛出“未找到”
- pywinauto - 让 pywinauto 在截屏前运行所有的 cmd 命令
- jquery - 现有 JS 的 Google Analytics 问题
- java - 如何使 REST API 安全
- node.js - 向不同端点发出请求时,Twitter 的速率限制如何发挥作用?