【问题标题】:Read file content in WORKSPACE读取 WORKSPACE 中的文件内容
【发布时间】:2020-02-01 08:40:16
【问题描述】:

我在我的 WORKSPACE 文件中使用 container_pull。 (这是bazel docker rules 的一部分)
这是它的样子:

container_pull(
    name = "base-image",
    registry = "registry:9999",
    repository = "base-image",
    digest = "sha256:e6f44554a270025c578c0f91160d809735c2589baae80bafcdeebefb0c0b04b6",
    tag = "1.1.0"
)

但是,有一个文件包含 base-image 的版本,我希望从该文件中读取它,而不是在 WORKSPACE 中进行硬编码。
如何在 WORKSPACE 中读取文件内容?

【问题讨论】:

    标签: bazel starlark


    【解决方案1】:

    没有直接的方法可以从工作区文件中读取文件。 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-12
      • 2011-04-21
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      相关资源
      最近更新 更多