#variables #jenkins #groovy #jenkins-pipeline #jenkins-plugins
#переменные #Дженкинс #groovy #дженкинс-конвейер #дженкинс-плагины
Вопрос:
Недавно я преобразовал свой декларативный конвейер в скриптовую форму. Даже если кажется, что все работает нормально, у меня есть проблема, связанная с инициализацией многозначного параметра.
В моем декларативном конвейере я использовал следующее определение многозначного параметра (который работал должным образом)::
parameters {
choice(choices: ['fix', 'major', 'minor', 'none'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING")
}
Я преобразовал его в эту форму для скриптового конвейера:
properties([
parameters([
choice(choices: ['fixnmajornminornnone'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
]),
])
Проблема в том, что когда я понял, что что-то работает не так, как должно, и напечатал значение переменной с sh """echo "Versioning parameter check:" ${params.VERSIONING}"""
шагом, я получил это из консоли Дженкинса:
Проверка параметров управления версиями: false
Который одновременно является значением, отсутствующим в списке, и другого типа (логическое значение вместо строки).
Есть ли способ реализовать инициализацию параметров с несколькими значениями в конвейерах сценариев Дженкинса?Почему эта директива не работает «из коробки» в конвейере сценариев, тогда как она работает в декларативном типе? Это ошибка или я делаю что-то не так?
Ответ №1:
Ваше определение абсолютно правильное. Вам просто нужно передать варианты в виде элементов списка, а не в виде отдельных значений n.
properties([
parameters([
choice(choices: ['fix', 'major', 'minor', 'none'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
])
])
Ответ №2:
Попробуйте другой вариант для определения параметра выбора:
properties([
parameters([
[$class: 'ChoiceParameterDefinition',
choices: 'fixnmajornminornnonen',
name: 'VERSIONING',
description: "Increase version's number: MAJOR.MINOR.FIX"
],
]),
])
Ответ №3:
Мы используем следующее для параметра выбора, поэтому оно выглядит как ваше собственное определение, но без скобок:
properties([
parameters([
choice(choices: 'fixnmajornminornnone', description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
]),
])
Если вы хотите, чтобы значение по умолчанию было пустым, просто добавьте пустой первый вариант, например:
choice(choices: 'nfixnmajornminornnone'