Ответ 1
Вот мой обходной путь для этого pb:
https://gist.github.com/jgraglia/44a7443847cff6f0d87387a46c7bb82f
то есть: вручную создать параметр, объявив все аргументы
Я смог добавить параметр multi checklist в свой конвейер с этим.
Плагин расширенного выбора параметров является отличным, и я использую его в заданиях, настроенных через пользовательский интерфейс https://wiki.jenkins-ci.org/display/JENKINS/Extended+Choice+Parameter+plugin
Однако я изо всех сил пытаюсь заставить его работать в конвейере Jenkinsfile
script.
Похоже, что плагин расширенного выбора параметров еще не полностью совместим с сценариями Pipeline, поскольку генератор синтаксиса конвейера Jenkins создает следующий фрагмент:
parameters([<object of type com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition>])
Если я создаю параметры вручную, я получаю такое же поведение, как указано в https://issues.jenkins-ci.org/browse/JENKINS-32188
org.kohsuke.stapler.NoStaplerConstructorException: There no @DataBoundConstructor on any constructor of class
Кто-нибудь знает какие-либо обходные пути, которые могут обойти проблему ExtendedChoiceParameterDefinition
, не используя @DataBoundConstructor
?
Вот мой обходной путь для этого pb:
https://gist.github.com/jgraglia/44a7443847cff6f0d87387a46c7bb82f
то есть: вручную создать параметр, объявив все аргументы
Я смог добавить параметр multi checklist в свой конвейер с этим.
Как и mkobit, в настоящий момент невозможно использовать плагин расширенного выбора в качестве параметра сборки.
То, что мне нравится использовать в качестве обходного пути, является конструкцией, подобной следующей
timeout(time: 5, unit: TimeUnit.MINUTES) {
def result = input(message: 'Set some values', parameters: [
booleanParam(defaultValue: true, description: '', name: 'SomeBoolean'),
choice(choices: "Choice One\nChoice Two", description: '', name: 'SomeChoice'),
stringParam(defaultValue: "Text", description: '', name: 'SomeText')
]) as Map<String, String>
}
echo "${result.SomeBoolean}, ${result.SomeChoice}, ${result.SomeText}"
И назовите его в начале моего конвейера. Затем вы получите запрос на эти вводы вскоре после начала сборки.
Со 2 апреля 2019 года это стало возможным благодаря этой фиксации: https://github.com/jenkinsci/extended-choice-parameter-plugin/pull/25
Вы можете использовать это, например, так:
properties([
parameters([
extendedChoice(
name: 'PROJECT',
defaultValue: '',
description: 'Sélectionnez le projet à construire.',
type: 'PT_SINGLE_SELECT',
groovyScript: valueKeysScript,
descriptionGroovyScript: valueNamesScript
)
])
])
Если вы хотите знать все возможные параметры, вы должны обратиться к исходному коду. Если вы хотите узнать все возможные значения для клавиши "type", взгляните на константы PT_*
.
На самом деле я нашел ответ случайно: Построить после каждой фиксации (без веб-хостов)
node {
properties([
buildDiscarder(
logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '5')),
parameters([
[$class: 'ExtensibleChoiceParameterDefinition',
choiceListProvider: [
$class: 'TextareaChoiceListProvider',
choiceListText: 'foo\nbar',
defaultChoice: 'bar',
addEditedValue: false,
],
description: 'blah blah blah blah',
editable: true,
name: 'choose_mnt'
],
booleanParam(defaultValue: false, description: '[TO DO]', name: 'include_installers')
]),
pipelineTriggers([])
])
stage('Do Work') {
print("-----------------------------------")
print("Build ID: ${currentBuild.id}")
sh 'date'
sh 'pwd'
}
}