如何获取 Jenkins 多分支管道作业的显示名称

How to get the displayName of a Jenkins Multibranch Pipeline Job

我已将所有 Jenkins 逻辑放入结构化管道脚本(又名 Jenkinsfile)中。

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

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

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

目前我没有找到方便的 public 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
    }
}

我使用 currentBuild.fullProjectName,它设置为 multibranch_pipeline_name/branch_namepipeline_name,具体取决于您使用的是多分支管道还是普通管道。