如何获取 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_name
或 pipeline_name
,具体取决于您使用的是多分支管道还是普通管道。
我已将所有 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_name
或 pipeline_name
,具体取决于您使用的是多分支管道还是普通管道。