kubevirtci make manifests

2022-11-25 17:06:10 浏览数 (1)

make manifests with-bazel or make manifests no-bazel

前者用bazel生成manifest,后者不用bazel。

主要区别就下面的生成{templator}的不同,后者进入仓库的tools/manifest-templator/目录后执行go build生成可执行文件然后复制到{templator}路径。

代码语言:javascript复制
(cd ${KUBEVIRT_DIR}/tools/manifest-templator/ && go_build && cp manifest-templator ${templator})

前者是通过bazel生成${templator}

代码语言:javascript复制
bazel run 
        --config=${HOST_ARCHITECTURE} 
        //:build-manifest-templator -- ${templator}

下面进入 //:build-manifest-templator – ${templator}

用了内置的genrule,input是tools/manifest-templator/目录下的templator标签,该标签对应于tools/manifest-templator/ package中的BUILD.bazel文件中的name:templator(用于go build “tools/manifest-templator/”工具),output是”manifest-templator-copier”,命令是"echo '#!/bin/shnncp -f $(SRCS) $$1' > "$@""

这段genrule做的事情是往output文件中打印一段shell脚本,该脚本就执行了个复制操作。将input源(就是go编译的tools/manifest-templator/工具)复制到$1(即${templator})。

代码语言:javascript复制
genrule(
    name = "build-manifest-templator",
    srcs = [
        "//tools/manifest-templator:templator",    ],
    outs = ["manifest-templator-copier"],
    cmd = "echo '#!/bin/shnncp -f $(SRCS) $$1' > "$@"",
    executable = 1,)

接下来都是用编译后的工具${templator}对manifests模板里的变量进行替换,得到manifests。

0 人点赞