如何获取詹金斯管道中的输入步骤

时间:2018-06-21 07:24:53

标签: jenkins groovy jenkins-plugins jenkins-pipeline

我在管道中使用了一个输入步骤,如下所示:

input(
         message : "some message",
         parameters: [
          [$class: 'ChoiceParameterDefinition',
            choices: string ,
            description: 'description',
            name:'input'
         ]
        ]
      )

我想使用我配置的名称输入来获取输入中的值,例如$ {input},但是它不起作用。我还尝试将其放在这样的var中:

def reg = input : messages : "", paramaters: [...]

但是它也不起作用,所以我不明白如何才能获得用户选择的参数,而在执行过程中却找不到方法。

此致

2 个答案:

答案 0 :(得分:4)

尝试使用此代码:

def userInput = input(id: 'userInput', message: 'some message', parameters: [
    [$class: 'ChoiceParameterDefinition', choices: string, description: 'description', name:'input'],
    ])
    VARAIBLE = userInput

这对我有用。 如果您需要添加更多ChoiceParameterDefinition,则代码应如下所示:

def userInput = input(id: 'userInput', message: 'some message', parameters: [
    [$class: 'ChoiceParameterDefinition', choices: string, description: 'description1', name:'input1'],
    [$class: 'ChoiceParameterDefinition', choices: string, description: 'description2', name:'input2'],
    ])
    VARAIBLE1 = userInput['input1']
    VARAIBLE2 = userInput['input2']

答案 1 :(得分:2)

使用ChoiceParameterDefinition时,请记住将选项定义为以\n分隔的字符串。您可以将input(...)步骤返回的值分配给变量,并在以后使用。看下面的例子:

node {
    stage('Test') {
        def reg = input(
            message: 'What is the reg value?', 
            parameters: [
                [$class: 'ChoiceParameterDefinition', 
                    choices: 'Choice 1\nChoice 2\nChoice 3', 
                    name: 'input', 
                    description: 'A select box option']
            ])

        echo "Reg is ${reg}"
    }
}

在此示例中,我定义了一个带有3个选项的单选。运行此管道时,我会看到以下弹出窗口以选择以下三个选项之一:

enter image description here

我选择第一个,并通过以下控制台输出完成管道:

[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/test-pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] input
Input requested
Approved by admin
[Pipeline] echo
Reg is Choice 1
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS