Динамическое или условное отображение параметров работы Дженкинса (а не их значения)

Скажем, у меня есть два (или более) типа проектов: приложение (приложение) и svc (служба), и я создал работу Jenkins (обычное задание) которые имеют множество параметров. Это общее задание может вызывать другие задания по типу проекта по отдельности (Trigger other project builds и т.д. И передавать соответствующие параметры), но это выходит за рамки этого вопроса.

Например:
PROJ_TYPE (тип параметра выбора со значениями: приложение, svc)
Param2 (определенного типа)
Параметр 3 (каскадного типа, т.е. Зависит от значения родительского параметра PROJ_TYPE).
Param4 (Предположим, я хочу показать этот параметр только тогда, когда PROJ_TYPE выбран как "приложение" )
Param5 (определенного типа)
Param6 (Предположим, что я хочу показать этот параметр только тогда, когда PROJ_TYPE выбран как "svc". Этот параметр может быть любого типа, то есть выбора, динамического, расширенного выбора и т.д.)

Если у меня есть вышеуказанные параметры в задании Дженкинса, то задание Дженкинса покажет/предложит все параметры, когда пользователь попытается построить (т.е. Сборка с параметрами).

Можно ли в Jenkins показать параметр (Param4), только если параметр PROJ_TYPE был выбран как приложение в противном случае, я вообще не хочу показывать этот параметр - или как-то, если возможно серый это из? то есть в этом случае задание будет показывать только PROJ_TYPE, Param2, Param3, Param4 и Param5 (и не будет отображать Param6 или отключено/выделено серым цветом).

Аналогично, я хочу показать параметр (Param6), только если параметр PROJ_TYPE был выбран как svc, в противном случае я вообще не хочу показывать этот параметр - или каким-то образом, если это возможно для его серого вне? то есть в этом случае задание будет показывать только PROJ_TYPE, Param2, Param3, Param5 и Param6 (и не будет отображать Param4 или отключено/выделено серым цветом).

Ответ 1

Я знаю, что это старенький, но я искал что-то похожее, пока не нашел плагин Active Choices. Он не скрывает параметры, но можно написать скрипт Groovy (либо непосредственно в параметре Active Choices, либо в Scriptler), чтобы он возвращал разные значения. Например:

Groovy
if (MY_PARAM.equals("Foo")) {return ['NOT APPLICABLE']}

else if (MY_PARAM.equals("Bar")) {return ['Это единственный выбор']}

else if (MY_PARAM.equals("Baz")) {return ['Bazoo', 'Bazar', 'Bazinga']}

/Groovy

В этом примере MY_PARAM является параметром в задании Jenkins. Если вы поместите MY_PARAM в поле "Активные параметры" "Параметры ссылки", сценарий будет пересматривать параметр каждый раз, когда он изменяется, и отображать возвращаемое значение (или список значений), которые соответствуют.

Таким образом, вы можете вернуть другой список вариантов (включая список из одного или даже нулевого варианта) в зависимости от предыдущих вариантов, но я не нашел способа предотвратить появление параметра на странице параметров. Несколько активных параметров выбора могут ссылаться на один и тот же параметр, поэтому в тот момент, когда кто-то выбирает "App" или "Svc", все нерелевантные параметры переключаются на "Not Applicable" или что-то другое, что вам подходит. Я также поиграл с некоторым цветом текста HTML, но у меня нет примеров кода для обмена.

кортик

Ответ 2

В соответствии с описанием вы можете сделать это с помощью плагин Dynamic-Jenkins-Parameter:

Плагин параметров Jenkins, который позволяет использовать два элемента выбора. Второй выбор заполняет значения в зависимости от выбора, сделанного для первого выбора.

Пример, указанный в вики, делает именно то, что вам нужно (по крайней мере, для одного условного случая). Я сам не пробовал.

Ответ 3

@derik Это сработало! для меня второй список заполняется на основе выбора первого элемента.

Я использовал плагин реактивных параметров Active Choice, требование было первым параметром перечислить мои серверы, на основе первого выбора второй параметр должен подключиться к выбранному серверу и составить список резервной копии. поэтому список доступных резервных копий будет показан здесь для восстановления.

  1. включен параметризованный.
  2. Выберите параметр выбора Имя: Сервер Выбор: выберите..      контроль качества      инсценировка      мастер Описание: выберите сервер из списка
  3. Добавить новый параметр "Активный выбор Реактивный параметр" Имя: Резервное копирование Сценарий: Groovy Script def getbackupsqa = ("sshpass -f/opt/installer/pass.txt/usr/bin/ssh -p 22 -o StrictHostKeyChecking = no [email protected] ls/opt/jenkins/backup"). execute ( )

if (Server.equals("Выбрать..")) {return ['Выбрать..']} else if (Server.equals("qa")) {return getbackupsqa.text.readLines()} else if (Server.equals("staging")) {return ['промежуточный сервер еще не настроен']} else if (Server.equals("master")) {return ['Главный сервер еще не настроен']}

Описание: выберите резервную копию из списка Параметры, на которые ссылаются: Сервер

Результат как здесь