Подтвердить что ты не робот

На основе работы Дженкинса можно изменить параметры сборки на полпути?

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

То, что я хотел бы сделать, это позволить инженеру указать значение - если они знают оптимальное значение - или оставить его пустым и вычислить значение на раннем этапе сборки. Если значение вычисляется, я бы хотел, чтобы вычисляющий шаг сборки обновлял значение параметра задания. Таким образом, все последующие шаги сборки не должны беспокоиться об использовании параметра или вычислять его, они просто используют параметр независимо.

Похоже, что Groovy Script плагин мог бы это сделать, но я не вижу, как я могу установить параметры сборки, просто ПОЛУЧИТЬ их.

4b9b3361

Ответ 1

Найден ответ: используйте EnvInject Plugin. Одной из особенностей является шаг сборки, который позволяет вам "вводить" параметры в задание сборки из файла настроек. Я использовал один шаг сборки для создания файла настроек, а затем еще один шаг сборки для ввода новых значений. Затем все последующие шаги сборки и операции после сборки использовали новое значение.

Ответ 2

У Jenkins есть возможность параметризовать сборки. Для параметра строки разработчик может оставить поле пустым, а затем скрипты сборки могут проверить, есть ли env. переменная для параметра. Если env. вар. не установлен, script может выполнять любой расчет (я не думаю, что у Дженкинса есть "предварительные шаги" ) и передать его. Для параметра выбора первая строка может быть чем-то вроде (Default), и снова сборка script может проверить ее значение и действовать соответственно.

Примечание (Default)

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

Я надеюсь, что это поможет,
Zachary

Ответ 3

Это мое решение, которое должно работать с конвейерами Jenkins:

# Jenkinsfile
// define job parameters
properties([parameters([string(defaultValue: 'Hello', description: 'How should I greet the world?', name: 'Greeting')])])
// update or replace parameter
void setParam(String paramName, String paramValue) {
    List<ParameterValue> newParams = new ArrayList<>()
    newParams.add(new StringParameterValue(paramName, paramValue))
    $build().addOrReplaceAction($build().getAction(ParametersAction.class).createUpdated(newParams))    
}

print params.Greeting
setParam("Greeting", "bonjour")
print params.Greeting