22

我正在尝试将 jenkins 管道作为代码进行 poc。我正在使用 Github 组织文件夹插件来扫描 Github 组织并为每个分支创建作业。有没有办法明确定义从 Jenkinsfile 获得的管道作业的名称?我还想为这些工作添加一些描述。

4

3 回答 3

26

你需要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")
于 2016-07-23T13:47:20.023 回答
11

我在这个聚会上迟到了,但是这个问题迫使我在#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 沙盒批准方法批准单个脚本调用,但它比我在网上找到的关于重命名父管道的实际子级的任何其他方法都简单得多。最后要注意的是,这应该在 Jenkinsfile 中工作,您可以在其中使用环境变量来操作正在设置的作业项。

于 2018-03-01T03:36:13.230 回答
5

我尝试使用已接受答案中的代码片段来描述我在 Jenkinsfile 中的 Jenkins 管道。我必须将代码片段包装到带有@NonCPS注释的函数中,并将 def 用于 item 变量。我已将代码片段放在 Jenkinsfile 的根目录中,而不是在节点部分。

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

setDescription()
于 2018-01-05T14:16:10.710 回答