Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在BUILD.bazel中获得git commit SHA?_Bazel - Fatal编程技术网

如何在BUILD.bazel中获得git commit SHA?

如何在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

我的目标是使用Bazel创建一个名称中包含当前头部git提交SHA的zip文件。
我知道有一种叫做冲压的技术,但我很难思考如何将其用于我需要的东西。
我已经有了一些代码(规则)来创建我需要的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>)