如何自定义Jenkins构建名称?
当我在Jenkins中运行一个作业时,每个构建都有一个名称,显示在构建历史的UI中,基本上是当前日期和时间 我希望能够在那里输入构建参数,这样我就可以在构建历史中看到已经构建了哪些分支以及何时构建 我已经搜索了很多插件来实现这一点,但是没有找到任何插件。有吗?听起来像 但如果您正在使用,您可以这样做:如何自定义Jenkins构建名称?,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,当我在Jenkins中运行一个作业时,每个构建都有一个名称,显示在构建历史的UI中,基本上是当前日期和时间 我希望能够在那里输入构建参数,这样我就可以在构建历史中看到已经构建了哪些分支以及何时构建 我已经搜索了很多插件来实现这一点,但是没有找到任何插件。有吗?听起来像 但如果您正在使用,您可以这样做: currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}" Built with parameter MYPARAM: ${E
currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}"
Built with parameter MYPARAM: ${ENV, var="MYPARAM"}
[回复帕特里斯·M.的上述评论,只是我没有足够的声誉发表评论]: 该插件可以表达多种变量,包括环境变量,当与结合使用时。此外,构建参数也可用作环境变量;因此,例如,如果您的构建有一个参数“MYPARAM”,那么您只需在构建名称中使用它(假设您安装了令牌宏插件),如下所示:
currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}"
Built with parameter MYPARAM: ${ENV, var="MYPARAM"}
还可以使用“手动”设置生成名称。只需遵循以下步骤:
def build = Thread.currentThread().executable
assert build
def newBuildName = build.getEnvironment().get('newVersion')
try {
if (newBuildName) build.displayName = newBuildName
println "Build display name is set to ${newBuildName}"
} catch (MissingPropertyException e) {}
如您所见,我们在这里使用
build.displayName
变量。它的值是Jenkins中可见的构建名称。此插件“”可能会帮助您。作为构建名称的来源,您可以使用磁盘上的文本文件或环境变量,也可以将插件与此类插件组合使用,如警告:这仅适用于*nix环境。对于单个shell步骤,您可以按以下方式执行:
/usr/bin/env JOB_NAME="Old JOB_NAME: ${JOB_NAME}" <command>
/usr/bin/env JOB_NAME=“旧作业名称:${JOB_NAME}”
假设您的项目名为“myproject”,则会将JOB_NAME环境变量视为“Old JOB_NAME:myproject”来修改默认的显示名称,请使用
currentBuild.displayName=“#${BUILD_NUMBER},branch${branch}”
来修改默认的显示名称,但此插件无法表示构建参数,或者一般来说,可以设置脚本环境变量。但它可以从工作区读取主机环境变量(例如,${HOSTNAME}')和属性文件。因此,一个不太友好的解决方法是将shell脚本定义为构建步骤,并将参数“name=values”写入任意属性文件(例如:echo“MY_PARAM=${MY_PARAM}”>params.properties。唯一的问题是构建名称设置器插件过早地对表达式求值一次,最后只在最后求值(因此构建必须结束才能看到结果)。有人找到更好的替代方法吗?我要设置的名称可以很容易地从现有属性计算出来(通过一些非常简单的字符串操作)但是,除了输出到属性文件然后注入的shell脚本之外,我看不到任何方法可以做到这一点。主要的陷阱是作业可能会在进入注入步骤之前失败!@Constantinos我更新了我的答案,以涵盖使用管道作业,这使得这种方法比自由式作业更容易。非常酷。作为“用户”在您的Groovy脚本上有“管理员批准”的减速。使用Groovy Postbuild插件,语法有点不同。例如:manager.build.displayName=“#”+manager.build.number+”+manager.envVars[“desc_var”];
——对于描述:manager.build.description=“Groovy Postbuild:”+manager.build.number
考虑到build Name Setter plugin的依赖性,我认为这是我们在不太头疼的情况下可以实现的最好结果术语重载:当前日期和时间显示在“Description”字段中,而不是“Name”默认为递增数字。请参阅插件或管道DSL的currentBuild.description
属性。对于Jenkins声明性管道,可以添加script{currentBuild.displayName=${VARIABLE}}
来更改生成名称。