如何在Jenkins Pipeline中获取输入步骤和输出

5
我在我的流程中使用了一个输入步骤,如下所示:

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

我想使用我配置的输入名称 input 来获取输入框中的值,就像这样 ${input},但它没起作用。我还尝试将其放入变量中,像这样:

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

但它仍然不起作用,我不明白如何获取用户选择的参数,并且在操作中没有找到如何做到这一点。

祝好!

2个回答

8

使用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

谢谢您的回答,它很有效!关于您建议将选择列表定义为由“\n”分隔的字符串,我的变量“string”包含了我从列表中获取的以“\n”分隔的选项。感谢您的帮助! - Nab

7

尝试使用以下代码:

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

谢谢你的回答,我像其他答案一样测试了它,两个都有效。还要感谢第二个例子中的多个ChoiceParameterDefinition,它对我很有帮助! - Nab
嗨@Nab,如何添加下拉参数? - Kumaresan Sd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接