在Windows系统上,Bazel genrule有时会无法正确识别gcloud配置,导致在运行genrule时出现错误。解决此问题的步骤如下:
genrule(
name = "my_rule",
srcs = ["src.py"],
outs = ["output.txt"],
cmd = "$(location src.py)",
tools = ["gcloud"],
env = {
"PATH": os.pathsep.join([
os.environ.get("PATH", ""),
os.path.join(os.environ.get("CLOUDSDK_CORE_SDK_HOME", ""), "bin"),
]),
},
)
在上面的示例中,gcloud路径是通过os.environ.get("CLOUDSDK_CORE_SDK_HOME", "")获取的。这是gcloud默认安装路径的环境变量名称,但如果已更改路径,则应相应更改。
bazel build my_rule
这将编译genrule并执行其中包含的命令,其中PATH环境变量已包括gcloud路径。
引用自:https://stackoverflow.com/questions/49658745/bazel-genrule-does-not-see-gcloud-config-windows