从 Jenkinsfile 设置管道名称和描述

Set the pipeline name and description from Jenkinsfile

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

您需要像下面那样使用 currentBuildnode 部分很重要

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")

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

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

setDescription()

我在这个问题上迟到了,但这个问题迫使我进入了#jenkins 聊天室,我今天大部分时间都在这里度过。我要感谢那个聊天中的@tang^ 以优雅的方式帮助我解决这个问题。

要在 multi-branch 声明性管道中为子项设置 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 中工作,您可以在其中使用环境变量来操作正在设置的作业项。