我正在运行bazel并使用rules_docker的规则container_pull。container_pull具有体系结构属性。在CI和一些开发机器中,架构是amd。在新的m1 macs中,架构是arm。
如何配置bazel在amd机器和arm on arm机器上拉取amd?
发布于 2021-05-11 11:48:16
最简单的方法是使用两个container_pull规则和select。在你的WORKSPACE中
container_pull(
name = "thing_amd",
architecture = "amd64",
<same stuff you have now>
)
container_pull(
name = "thing_arm",
architecture = "arm",
<same stuff you have now>
)然后在一些BUILD文件中:
config_setting(
name = "k8",
constraint_values = ["@platforms//cpu:x86_64"],
)
config_setting(
name = "arm",
constraint_values = ["@platforms//cpu:arm"],
)
alias(
name = "thing",
actual = select({
":k8": "@thing_amd//image",
":arm": "@thing_arm//image",
}),
)如果您想要消除重复数据(尤其是当您有两个以上的CPU时),macros非常有用。创建一个.bzl文件,其中所有的CPU都在一个变量中,然后创建一个宏,用于创建所有的container_pull存储库(从WORKSPACE执行load+call操作),以及另一个宏,用于创建config_setting和从该alias文件执行load+call操作的CPU。
https://stackoverflow.com/questions/67458821
复制相似问题