2016-08-29 56 views
0

我在Jenkins的多分支项目工作正常,但我想修改作业描述,默认为“完整项目名称:xxxx /”,以便更有意义。Jenkins multibranch:change从Groovy的工作描述

我可以通过使用currentBuild变量轻松更改构建说明,该变量在执行Jenkinfile时可用,但我无法确定如何修改父作业说明。

我的使用案例是,我的存储库的每个分支都有一个关联的容器,它在完成时使用最新版本更新。因此,我的多分支项目中的每个作业都有其容器和Web URI,我想将其放入作业说明中。

这可能吗?

回答

2

如何使用Jenkins Api来更新当前作业的描述?喜欢的东西:

要更新上多分支项目介绍:

def jobName = "${env.JOB_NAME}" 
Jenkins.instance.getItem(jobName.split('/')[0]).description = "hi" 

要更新特定分支项目的多分支项目介绍:

def jobName = "${env.JOB_NAME}" 
Jenkins.instance.getItem(jobName.split('/')[0]).getItem("${env.BRANCH_NAME}").description = "hi" 

注意:您将需要批准几项功能通过“管理Jenkins” - >“正在处理脚本批准”

+0

'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许使用STATICMETHOD jenkins.model脚本。Jenkins getInstance ':-( – Gui13

+0

我认为你应该可以通过转到“管理Jenkins” - >“进程内脚本审批”来批准它,如果没有,请告诉我。 –

+0

哇,这改变了一切。你不能访问Jenkinsfile中的全局变量,但是这个“In Process脚本审批”非常棒。谢谢Daniel。 – Gui13

1

我已经写了这个函数。 它支持文件夹中的作业。 不要忘记允许从沙箱:管理詹金斯” - >‘在处理脚本审批’

@NonCPS 
def setJobDescription(text){ 
    def jobNameTable = env.JOB_NAME.split('/') 
    def it=Jenkins.instance 
    for(name in jobNameTable){ 
     it=it.getItem(name) 
    } 
    it.description = text 
}