Дженкинс множественный выбор выбор ввода

{  ... script {  ....
    if (isStartedByUser) {
        try {
          timeout(time: 60, unit: 'SECONDS') {
            def userInput = input(
              id: 'userInput', message: 'Please Enter Environment', parameters:
                [choice(name: 'environment', choices: tf.join("\n"), description: 'Choose environment you want to deploy this build'),
                 choice(name: 'debuglevel', choices: "\nINFO\nTRACE\nDEBUG\nWARN\nERROR", description: 'Choose debug level')
                ]
            )
            mydir = userInput['environment']

здесь

У меня есть это в конвейере Дженкинса. tf — это список, импортированный из json. В настоящее время этот фрагмент кода позволяет выбрать только один вариант. Я хотел бы иметь возможность выбирать несколько вариантов для раскрывающегося списка среды.

Итак, теперь у меня есть это, и это работает! но нужна небольшая оптимизация:

 def multiSelect= new ExtendedChoiceParameterDefinition("Envs",
            "PT_MULTI_SELECT",
            tf.join(","),
            "project name",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            tf.join(","),
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            false,
            false,
            15,
            "Available Environments",
            ",")


            def userInput = input(
              id: 'userInput', message: 'Please Select terraform params', parameters:
                [multiSelect]
            )
            
            def userInput2 = input(
              id: 'userInput', message: 'Please Select terraform params', parameters:
                [choice(name: 'debuglevel', choices: "\nINFO\nTRACE\nDEBUG\nWARN\nERROR", description: 'Choose debug level')
                ]
            )
            
            terraformdir = userInput.split(',')
            println "dir ${terraformdir}"
            env.TF_LOG = userInput2['debuglevel']

Я надеялся получить оба входа на одном экране.

Когда я сделал

def userInput = input(
              id: 'userInput', message: 'Please Select terraform params', parameters:
                [multiSelect,
                 choice(name: 'debuglevel', choices: "\nINFO\nTRACE\nDEBUG\nWARN\nERROR", description: 'Choose debug level')
                ]
            )
            

Я не был уверен, как получить доступ к значению multiSelect.

Вы можете увидеть доступные варианты для input шага. Вариант выбора extendedChoice в сочетании с его конфигурацией Multi Select должен дать вам то, что вам нужно.

Noam Helmer 26.01.2023 11:06
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, у вас должно получиться, взгляните на пример здесь. Ниже приведен пример декларативного конвейера.

import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition

def multiSelect= new ExtendedChoiceParameterDefinition("name",
            "PT_MULTI_SELECT",
            "blue,green,yellow,blue",
            "project name",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "blue,green,yellow,blue",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            false,
            false,
            3,
            "multiselect",
            ",")

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                script {
                     def userInput = input  id: 'customID', message: 'Let\'s promote?', ok: 'Release!', parameters:  [multiSelect]
                }
                echo 'Hello World'
            }
        }
    }
}

поэтому я обновил свой оригинальный комментарий. Я пытаюсь объединить вещи на 1 экране ввода.

rismoney 26.01.2023 23:11

Я понял. это был Envs (название мультиселекта. tyvm!

rismoney 27.01.2023 15:41

Другие вопросы по теме