эквивалент выбора в конвейере сценариев Дженкинса

#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'