2016-11-20 72 views
1

我在Jenkins 2中有一个多分支管道作业,连接到一个GitHub存储库(可用here)。 GitHub仓库中的每个pull请求都会在Jenkins中创建一个新的“job”,但作业从pull请求编号继承它的名字(即作业被称为PR-1,PR-2等等),这在Jenkins中是没有意义的上下文。 是否有可能(以及如何)配置作业或Jenkinsfile为每个拉取请求添加作业描述?如何在Jenkins 2多分支管道中添加工作描述?

+0

复制? http://stackoverflow.com/questions/38532119/set-the-pipeline-name-and-description-from-jenkinsfile – MaTePe

+0

不完全是我在找什么,但让我走上正轨。使用'Jenkins.instance.getItemByFullName(“xxx/PR-zz”)。setDisplayName(“任何描述...”)只会改变显示名称。为了从GitHub获取拉请求描述,我将添加更多代码,并在此处作出答案。 –

回答

2

这是我如何能够从拉请求的内容设置职位描述:

if (env.BRANCH_NAME.startsWith('PR')) { 
def resp = httpRequest url: "https://api.github.com/repos/xxx/yyy/pulls/${env.BRANCH_NAME.substring(3)}" 
    def ttl = getTitle(resp) 
    def itm = getItem(env.BRANCH_NAME) 
    itm.setDisplayName("PR '${ttl}'") 
} 
} 

@NonCPS 
def getItem(branchName) { 
    Jenkins.instance.getItemByFullName("sonar-openedge/${branchName}") 
} 

@NonCPS 
def getTitle(json) { 
    def slurper = new groovy.json.JsonSlurper() 
    def jsonObject = slurper.parseText(json.content) 
    jsonObject.title 
} 

这使得其从作业总览页面可直接职位描述(如本例:https://ci.rssw.eu/job/sonar-openedge/

的完整的提交和Jenkinsfile都可以在这里: https://github.com/Riverside-Software/sonar-openedge/commit/e2c76ca58b812e4ceac65c406f0b2aae9fbf3f5f

+0

也是itm.setDescription(...)的作品。 (只是不要调用itm.save()) – Akom

相关问题