Как получить displayName задания Jenkins Multibranch Pipeline

Я поместил всю свою логику Jenkins в скрипт структурированного конвейера (он же Jenkinsfile).

Если что-то пойдет не так, я отправлю письма. Для темы я хочу использовать displayName задания, а не идентификатор задания env.JOB_NAME (поскольку они управляются шаблонами контроля доступа, а не читабельностью).

С обычным заданием конвейера я мог бы использовать currentBuild.rawBuild.project.displayName, но для многоветвевых конвейеров это просто имя ветки.

Или есть еще лучший способ получить удобное для пользователя имя, а затем пройти через rawBuild?


person dag    schedule 26.04.2017    source источник


Ответы (2)


На данный момент я не нашел подходящего общедоступного 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
    }
}
person dag    schedule 28.04.2017
comment
Разве currentBuild не является глобальным, а не входным параметром? - person Blake Mitchell; 18.05.2017
comment
Вы правы, Блейк, но я использую этот код как статическую функцию в классе, предоставленном общей библиотекой, поэтому мне пришлось передать параметр currentBuild as, чтобы использовать его. Если вы определяете функцию в своем конвейере, вам это не нужно. - person dag; 23.05.2017

Я использую currentBuild.fullProjectName, для которого установлено значение multibranch_pipeline_name/branch_name или pipeline_name, в зависимости от того, используете ли вы многоветвевой конвейер или обычный конвейер.

person Eric    schedule 01.10.2020