Jenkins 如何获得';git描述';以詹金斯的名字建造

Jenkins 如何获得';git描述';以詹金斯的名字建造,jenkins,Jenkins,将命令的输出放在Jenkins构建名称中的最佳方式是什么 我想将git descripe命令的输出放入Jenkins作业的构建名称中 我安装了build name setter插件,希望能将build name设置为: ${ENV, var="GIT_DESCRIBE"} 在设置名称之前,我不知道如何设置$GIT\u descripe!我试过使用envirect插件。动态设置环境变量的唯一方法是使用groovy脚本。这将很好地工作,除了我的作业在远程从机上运行,而groovy脚本(显然)只在主

将命令的输出放在Jenkins构建名称中的最佳方式是什么

我想将git descripe命令的输出放入Jenkins作业的构建名称中

我安装了
build name setter
插件,希望能将build name设置为:

${ENV, var="GIT_DESCRIBE"}
在设置名称之前,我不知道如何设置
$GIT\u descripe
!我试过使用
envirect
插件。动态设置环境变量的唯一方法是使用groovy脚本。这将很好地工作,除了我的作业在远程从机上运行,而groovy脚本(显然)只在主机上运行

如果您需要“描述”数据(即,您不能只使用现有的
$GIT_分支
$GIT_提交
环境变量),您可以添加“执行shell步骤”,包括:


然后,添加一个EnvInject构建步骤,该步骤从
git.properties
文件中注入属性。

我尝试按照Christopher Orr概述的步骤进行操作,但我的“Execute shell”脚本似乎只在构建开始后运行。在我的例子中,GIT_descripe从未被及时设置/注入以供构建使用

经过一段时间的研究,我发现了一个解决方案,使用“评估Groovy脚本”步骤作为环境注入器插件的一部分。Groovy脚本在预构建时进行评估。不过,这里的主要警告是,.groovy脚本不是在$WORKSPACE中运行的。我最后做的是从.groovy脚本执行位于我的应用程序($WORKSPACE)中的shell脚本,并将其输出作为带有GIT_descripe的映射返回

计算Groovy脚本

def sout = new StringBuilder()
def serr = new StringBuilder()
def proc = "$WORKSPACE/git-describe.sh".execute()
proc.waitForProcessOutput(sout, serr)
def map = [GIT_DESCRIBE: sout.toString()]
return map
git-descripe.sh

#! /bin/bash

# change working directory to the current script's directory
cd "${0%/*}"

echo `git describe`
从那里,您应该能够在“Build name”宏中引用GIT_description

使用插件v1.6.7,可以执行以下操作:

  • “执行shell”构建步骤,该步骤执行
    git description>version.txt

  • “更新生成名称”生成步骤,该步骤从
    version.txt
    获取生成名称

尚未测试,但是
git-C$WORKSPACE description
应该可以正常工作,不需要额外的脚本。
#! /bin/bash

# change working directory to the current script's directory
cd "${0%/*}"

echo `git describe`
${ENV, var="GIT_DESCRIBE"}