2016-07-22 50 views
7

我正在尝试做一个jenkins管道作为代码。我使用Github组织文件夹插件来扫描Github组织并为每个分支创建作业。有没有一种方法可以明确定义从Jenkinsfile获取的管道作业的名称?我也想为工作添加一些描述。从Jenkinsfile设置管道名称和描述

+0

你可以显示Jenkinsfile的片段吗? – Jayan

+0

对于其他人希望更改工作/项目描述而不是构建说明,请参阅https://stackoverflow.com/questions/39200948/jenkins-multibranch-change-job-description-from-groovy – Mark

回答

11

您需要使用如下所示的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

嗨Jayan,感谢您的回复。我已经尝试了currentBuild.description选项。它显示为Build History部分中内部版本号下的标签。但是我期望以这种方式设置它们,使它们显示在作业的“查看配置”选项下。这是可行的吗? – HarshaB

+0

没有看到插件选项中的一种方式。以上答案更新为使用renameTo api(您可能已经看到过) – Jayan

+0

非常感谢Jayan。这就像一个魅力。正是我想要的。我必须确保我允许这些脚本在Jenkins-> In-Process脚本批准下批准运行。有没有办法在这里批准手动添加新类?我现在的做法是通过选择批准选项来选择我在此脚本中使用的任何类。它不允许我手动输入任何类并批准。 – HarshaB

2

我试图从接受的答案使用代码片段来描述Jenkinsfile我詹金斯管道。我不得不使用@NonCPS注释将代码段包装到函数中,并使用def作为item变量。我把代码片段放在Jenkinsfile的根目录下,而不是在节点部分。

@NonCPS 
def setDescription() { 
    def item = Jenkins.instance.getItemByFullName(env.JOB_NAME) 
    item.setDescription("Some description.") 
    item.save() 
} 

setDescription() 
0

我来晚了就这一个党,但这个问题迫使我在#jenkins聊天,我今天花了我大部分的时间。我想感谢那次聊天中的@ tang ^,帮助我以优雅的方式解决这个问题。

要为孩子的工作内容和显示作业名在多支声明式管道使用以下步骤在一个阶段阻止:

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文件中工作,您可以使用环境变量来操作正在设置的作业项目。