Как сохранить последнее значение параметра в параметризованном задании как значение по умолчанию для следующей сборки в 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 выше

Теперь это должно сохраняться.