Можно ли изменить параметры сборки на этапе сборки в Jenkins? - PullRequest
13 голосов
/ 09 августа 2011

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

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

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

Ответы [ 3 ]

8 голосов
/ 15 августа 2011

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

3 голосов
/ 10 августа 2011

Дженкинс имеет возможность параметризовать сборки. Для строкового параметра разработчик может оставить поле незаполненным, а затем ваши сценарии сборки могут проверить наличие env. переменная для параметра установлена. Если env. вар. не задан, сценарий может выполнить любые необходимые вычисления (я не думаю, что у Дженкинса есть «этапы предварительной сборки») и передать их. Для параметра выбора первой строкой может быть что-то вроде (Default), и снова сценарий сборки может проверить его значение и действовать соответственно.

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

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

Надеюсь, это поможет,
Zachary

0 голосов
/ 17 января 2018

Это мое решение, которое должно работать с конвейерами 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...