如何在BUILD.bazel中获得git commit SHA?
我的目标是使用Bazel创建一个名称中包含当前头部git提交SHA的zip文件。如何在BUILD.bazel中获得git commit SHA?,bazel,Bazel,我的目标是使用Bazel创建一个名称中包含当前头部git提交SHA的zip文件。 我知道有一种叫做冲压的技术,但我很难思考如何将其用于我需要的东西。 我已经有了一些代码(规则)来创建我需要的zip文件: def go_binary_zip(名称): go_二进制( name=“{}\u bin”。格式(名称), 嵌入=[“:转到默认库”], goarch=“amd64”, goos=“linux”, 可见性=[“//可见性:专用”], ) #如何在这里添加git提交SHA? native.gen
我知道有一种叫做冲压的技术,但我很难思考如何将其用于我需要的东西。
我已经有了一些代码(规则)来创建我需要的zip文件:
def go_binary_zip(名称):
go_二进制(
name=“{}\u bin”。格式(名称),
嵌入=[“:转到默认库”],
goarch=“amd64”,
goos=“linux”,
可见性=[“//可见性:专用”],
)
#如何在这里添加git提交SHA?
native.genrule(
name=“{}\u bin_archive.”格式(名称),
srcs=[“:{}\u bin.format(name)],
outs=[“{}\u bin.zip.”格式(名称)],
cmd=“$(location@bazel_tools//tools/zip:zippers/zippers)c$@{}=$您可以使用git功能,它可以替换.gittributes
文件中指定的文件中出现的任何$Id$
。在bazel中无法在宏或规则实现中获取git提交SHA。输出路径是确定的。您可以在可用的文件中获取该信息可在规则中使用(请参见下面的选项2。)
如果您的目标是在文件名中使用git commit SHA创建一个zip,那么您有几个选项
编写一个在bazel外部运行的脚本,将zip从bazel复制到您的工作区中
!/bin/bash
bazel构建//:示例
cp$(bazel info bazel bin)/example.zip示例-$(git rev parse HEAD).zip
创建一个使用戳记生成脚本文件的规则,您可以通过bazel run
运行该脚本文件来为您复制归档文件。在规则实现中,您可以访问stable status.txt
和volatile status.txt
文件(记录在此处:)分别使用ctx.info_文件
和ctx.version_文件
请注意,ctx.info_文件
和ctx.version_文件
未记录,因此不清楚此API是否稳定或将来是否会受支持(.)
我要试试第2号,如果我能根据这些指令找出它的话,我会把它标记为正确答案。在它的立场上,我仍然很难诚实。如果你不介意C++依赖,我为这个精确的用例写了一个实用程序库+更多的内容:(<代码> BZLWSSIX < /COD>)