Как сохранить последнее значение параметра в параметризованном задании как значение по умолчанию для следующей сборки в Jenkins?
Я использую Дженкинса в течение нескольких недель, и у меня есть одна небольшая проблема. Я не могу найти плагин или решение для хранения последнего значения параметра в параметризованном задании в качестве значения по умолчанию для следующей сборки.
Например:
Мой параметр принимает версию сборки (1.0.0.01) в первой сборке. В следующей сборке он будет изменен на 1.0.0.02, но я хочу иметь 1.0.0.01 в поле значений по умолчанию в качестве подсказки.
Кто-нибудь имеет решение или совет?
Ответы
Ответ 1
Вы можете добавить шаг построения системы groovy к своей задаче (или, возможно, шаг post build groovy) с помощью Jenkins API, чтобы напрямую изменить проект, задав значение параметра по умолчанию.
Вот какой код, который может быть полезен для начала работы:
import hudson.model.*
paramsDef = build.getParent().getProperty(ParametersDefinitionProperty.class)
if (paramsDef) {
paramsDef.parameterDefinitions.each{ param ->
if (param.name == 'FOO') {
println("Changing parameter ${param.name} default value was '${param.defaultValue}' to '${param.defaultValue} BAR'")
param.defaultValue = "${param.defaultValue} BAR"
}
}
}
Посмотрите на класс ParameterDefinition в модели Jenkins.
Вероятно, вам нужно изменить значение параметра по умолчанию, основанное на текущем выполнении сборки. Некоторый код для этого будет выглядеть следующим образом:
def thisBuildParamValue = build.buildVariableResolver.resolve('FOO')
Ответ 2
Постоянный плагин параметров - это именно то, что вы ищете!
Вам просто нужно загрузить его из официального репозитория Jenkins и установить его, нет необходимости в каких-либо дополнительных настройках.
Затем на вашей работе вам просто нужно добавить "Persistent Parameter", чтобы использовать значения по умолчанию и сохранять их между сборками.
Ответ 3
Модуль Extended Choice Parameter предоставляет эту возможность, используя значения параметров по умолчанию из файла свойств. Параметр по умолчанию может быть выбран из указанного ключа свойства, и этот ключ может быть программно изменен в вашей текущей сборке. Затем я использовал бы groovy script в текущей сборке, чтобы установить значение ключа свойства по умолчанию для следующей сборки.
В качестве примера у вас будет параметр расширенного выбора, значение по умолчанию которого определяется файлом свойств version.properties с ключами следующим образом:
versions=1.0.0.02, 1.0.0.01, 1.0.0.00
default.version=1.0.0.02
Определение параметра будет включать:
Property File=version.properties
Property Key=versions
Default Property File=version.properties
Default Property Key=default.versions
Графический интерфейс для вашего параметра в следующей сборке будет отображать список выбора с 1.0.0.02, выбранным по умолчанию. Эта функция также очень полезна для сборки конвейера, где вы хотите, чтобы параметры этапа сборки ниже по потоку были установлены с помощью более ранней сборки.
Единственный недостаток этого подхода может заключаться в том, что параметр UI будет выпадающим списком. Вы можете выбрать одно значение в ключе версии, чтобы не путать пользователей.
Ответ 4
Аналогично ответу thiagolr, но для тех из вас, кто использует конвейеры! Похоже, что постоянный параметр-плагин не работает для тех, кто использует конвейер 2.0. Но на https://github.com/ashu16815/persistent-parameter-plugin есть исправленная версия, которая мне подходит.
Клонируем это локально:
мерзкий клон https://github.com/ashu16815/persistent-parameter-plugin.git
Построить это:
mvn clean install
Установите его в Дженкинс:
1) Перейдите к Jenkins> Управление Jenkins> Управление плагинами
2) Нажмите вкладку "Дополнительно"
3) Прокрутите вниз, чтобы загрузить плагин
4) Нажмите "Выбрать файл" и выберите файл persistent-parameter.hpi в целевом каталоге сборки maven выше
Теперь это должно сохраняться.