Электронный текст Jenkins Pipeline: как получить доступ к объекту сборки в сценарии предварительной отправки - PullRequest
0 голосов
/ 07 января 2019

Я использую Дженкинс вер. 2.150.1 и иметь несколько работ вольным стилем и некоторые работы на конвейере. В обоих типах заданий я использую плагин emailext с шаблонами и сценариями предварительной отправки.

Кажется, что переменная build , доступная в проектах фристайла, равна null в конвейерных проектах.

Сценарий предварительной отправки выглядит следующим образом (просто пример, мой сценарий более сложный):

msg.setSubject(msg.getSubject() + " [" + build.getUrl() + "]")

Нет проблем с переменной msg. В работе по фристайлу этот скрипт добавляет сборочный URL к теме письма. В конвейерном задании в консоли задания указано следующее:

java.lang.NullPointerException: Cannot invoke method getUrl() on null object

Вызов emailext в конвейерном задании:

emailext body: '${SCRIPT, template="groovy-html.custom.pipeline.sandbox.template"}', 
         presendScript: '${SCRIPT, template="presend.sandbox.groovy"}', 
         subject: '$DEFAULT_SUBJECT', 
         to: 'user@domain.com'

Я бы лучше нашел общее решение этой проблемы (например, Доступ к переменной build в сценарии предварительной отправки конвейера ), но также был бы признателен за любые обходные пути для моих текущих потребностей. : Доступ имя задания , номер задания и папка рабочего пространства в сценарии предварительной отправки конвейера.

1 Ответ

0 голосов
/ 09 марта 2019

Вы можете получить доступ к build в сценарии , например:

// findUrl.groovy

def call(script) {
   println script.currentBuild.rawBuild.url
   // or if you just need the build url
   println script.env.BUILD_URL
}

и вызовет скрипт из конвейера следующим образом:

stage('Get build URL') {
    steps {
        findUrl this
    }
}

currentBuild дает вам RunWrapper объект и rawBuild a Run . Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...