2015-07-21 58 views
4

将一个命令的输出放在Jenkins构建名称中的最佳(或任何!)方式是什么?如何将'git describe'的输出转换成Jenkins构建名称

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

我已经安装了build-name-setter插件与像构建名字为某事的希望:

${ENV, var="GIT_DESCRIBE"} 

我只是不知道如何设置$GIT_DESCRIBE设置名称前!我试过使用EnvInject插件。动态设置环境变量的唯一方法是使用groovy脚本。这将工作得很好,除了我的作业运行在远程从服务器上,groovy脚本(显然)只在主服务器上运行。

回答

5

如果您需要的“描述”的数据(例如,你不能只使用现有$GIT_BRANCH$GIT_COMMIT环境变量),你可以添加一个“执行壳牌迈”有:

echo GIT_DESCRIBE=$(git describe) > git.properties 

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

0

我试过按照Christopher Orr概述的步骤,但我的“Execute shell”脚本似乎只在构建开始后才运行。在我的情况下,GIT_DESCRIBE从未为构建使用而设置/注入。

经过一段时间的研究,我找到了一个解决方案,使用“评估Groovy脚本”步骤作为环境注入器插件的一部分。 Groovy脚本是在构建前评估的。但是,主要的注意事项是.groovy脚本不在$ WORKSPACE中运行。我最终做的是从.groovy脚本执行位于我的应用($ WORKSPACE)中的shell脚本,并使用GIT_DESCRIBE将其输出作为映射返回。

评估的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-describe.sh

#! /bin/bash 

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

echo `git describe` 

从那里,你应该能够引用GIT_DESCRIBE在 “构建名” 宏。

${ENV, var="GIT_DESCRIBE"} 
0

随着build-name-setter插件v1.6.7一个能做到以下几点:

  • “执行shell” 打造一步,这确实git describe >version.txt

  • “更新打造的名字” 生成步骤,其需要从version.txt建立名称。

相关问题