如何获取Jenkins Multibranch管道作业的displayName

dag*_*dag 5 jenkins jenkins-pipeline multibranch-pipeline

我把所有的Jenkins逻辑放在一个结构化的管道脚本(又名Jenkinsfile)中.

如果出现问题,我发送邮件.对于主题,我想使用displayName作业而不是作业ID env.JOB_NAME(因为它们是由访问控制模式驱动而不是可读性).

使用正常的管道作业我可以使用,currentBuild.rawBuild.project.displayName但对于多分支管道,这只是分支名称.

或者是否有更好的方法来获得用户友好的名称,然后遍历rawBuild?

dag*_*dag 7

现在我发现没有方便的公共api,所以这似乎是要走的路:

String getDisplayName(currentBuild) {
    def project = currentBuild.rawBuild.project

    // for multibranch pipelines
    if (project.parent instanceof WorkflowMultiBranchProject) {
        return "${project.parent.displayName} (${project.displayName})"
    } else {
        // for all other projects
        return project.displayName
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你是对的Blake,但我在共享库提供的类中使用此代码作为静态函数,所以我必须将`currentBuild`作为参数传递才能使用它.如果在管道中定义函数,则不需要此函数. (2认同)