Bazel 从配置文件中读取规则参数值

Bazel 从配置文件中读取规则参数值,bazel,bazel-rules,Bazel,Bazel Rules,考虑在工作区文件中编写的以下bazel规则: container_pull( name = "release-base", registry = "mydockernet:9443", repository = "release-base", digest = "sha256:...", tag = "1.8.2", ) 问题是标记值1.8.2写在yamlconfig文件中,我们希望尊重DRY原则(从config文件读取值,而不是复制bazel文件中的值

考虑在
工作区
文件中编写的以下bazel规则:

container_pull(
    name = "release-base",
    registry = "mydockernet:9443",
    repository = "release-base",
    digest = "sha256:...",
    tag = "1.8.2",
)

问题是标记值
1.8.2
写在
yaml
config文件中,我们希望尊重DRY原则(从config文件读取值,而不是复制bazel文件中的值)。有没有办法处理这个问题?

这不是yaml,但您可以在另一个bzl文件中定义内容,然后将它们加载到您的工作区:

load("common.bzl", "MYVERSION")
container_pull(
   name = "release-base",
   registry = "mydockernet:9443",
   repository = "release-base",
   digest = "sha256:...",
   tag = MYVERSION,
)
然后在common.bzl中:

MYVERSION=1.8.2

它不是yaml,但您可以在另一个bzl文件中定义内容,然后将其加载到您的工作区:

load("common.bzl", "MYVERSION")
container_pull(
   name = "release-base",
   registry = "mydockernet:9443",
   repository = "release-base",
   digest = "sha256:...",
   tag = MYVERSION,
)
然后在common.bzl中:

MYVERSION=1.8.2

是的,我们已经知道使用
bzl
文件的解决方案。当配置文件不是Starlark格式时,就会出现问题。是的,我们已经知道使用
bzl
文件的解决方案。当配置位于非Starlark格式的文件中时,就会出现问题。