我正在尝试将jenkins管道作为代码进行处理。我正在使用Github组织文件夹插件来扫描Github组织并为每个分支创建作业。有没有办法明确定义从Jenkinsfile获取的管道作业的名称?我还想为这些工作添加一些描述。
答案 0 :(得分:13)
您需要使用下面的currentBuild
。 node
部分非常重要
node {
currentBuild.displayName = "$yournamevariable-$another"
currentBuild.description = "$yourdescriptionvariable-$another"
}
编辑:上面一个重命名构建,其中原始问题是关于重命名作业。 管道中的以下脚本将执行此操作(这需要适当的权限)
item = Jenkins.instance.getItemByFullName("originalJobName")
item.setDescription("This description was changed by script")
item.save()
item.renameTo("newJobName")
答案 1 :(得分:4)
我在这个派对上迟到了,但这个问题迫使我参加#jenkins聊天,我今天大部分时间都在那里度过。我要感谢来自该聊天的@ tang ^以优雅的方式帮助解决这个问题。
要在多分支DECLARATIVE管道中设置子项的JOB描述和JOB显示名称,请在阶段中使用以下步骤阻止:
steps {
script {
if(currentBuild.rawBuild.project.displayName != 'jobName') {
currentBuild.rawBuild.project.description = 'NEW JOB DESCRIPTION'
currentBuild.rawBuild.project.setDisplayName('NEW JOB DISPLAY NAME')
}
else {
echo 'Name change not required'
}
}
}
这将要求您通过Jenkins沙箱批准方法批准单个脚本调用,但这比我在网上找到的关于重命名父管道的实际子项的任何其他内容要简单得多。最后要注意的是,这应该在Jenkins文件中工作,您可以使用环境变量来操作正在设置的作业项。
答案 2 :(得分:2)
我尝试使用接受的答案中的代码片段来描述我在Jenkinsfile中的Jenkins管道。我必须使用@NonCPS
注释将代码片段包装到函数中,并使用def作为项目变量。我已将代码段放在Jenkinsfile的根目录中,而不是放在节点部分。
@NonCPS
def setDescription() {
def item = Jenkins.instance.getItemByFullName(env.JOB_NAME)
item.setDescription("Some description.")
item.save()
}
setDescription()