Я пытаюсь получить построить длительность нашего сообщения, но он всегда возвращает 0.Дженкинс Pipeline currentBuild возвращает время продолжительности всегда 0
От чтения документации, пройдя через Слак источник плагина и читать другие ресурсы, я должен быть в состоянии сделать один из следующих:
def duration = currentBuild.duration
def duration = currentBuild.durationString
def duration = currentBuild.durationString()
def duration = currentBuild.getDurationString()
ни один из которых не работает. По моему мнению, это может быть связано с тем, что я называю это до того, как сборка действительно закончена, и поэтому длительность пока недоступна.
Структура трубопровода выглядит примерно так:
node {
try {
stage("Stage 1"){}
stage("Stage 2"){}
} catch (e) {
currentBuild.result = "FAILED"
throw e
} finally {
notifyBuild(currentBuild.result)
}
}
def notifyBuild(String buildStatus = 'STARTED') {
def duration = currentBuild.duration;
}
Мой вопрос:
- Почему я не получаю от продолжительности
- Есть ли способ в трубопроводе, чтобы указать " после сборки "шаг? Из того, что я прочитал попробовать выделяющийся должен работать таким образом
Мое временное решение заключается в использовании:
int jobDuration = (System.currentTimeMillis() - currentBuild.startTimeInMillis)/1000;
Который работает отлично, но всегда дает время в секундах, и я думаюcurrentBuild.duration
должно быть достаточно умна, чтобы дать различные единицы (?)
Определение глобальной библиотеки сделало трюк и полезна для других вещей. Спасибо – Tom
Да.глобальные библиотеки - это лучшая вещь, поскольку нарезанный хлеб или, может быть, Дженкинс - это, во всяком случае, GPL - отличная возможность ... –
Это определенно уменьшит некоторые мои конвейеры - eq отправит слабые уведомления и т. д. Дженкинс замечательный, я просто хочу, чтобы там будет более и более четкая документация ... – Tom