首页 > 解决方案 > 如何在 Jenkins 中显示选定的参数?

问题描述

有一个工作槽管道以交互方式向用户询问参数。进入后无法显示选择的参数。这是我的代码:

node {
    stage('Input Stage') {
        Tag = sh(script: "echo 123'\n'456'\n'789'\n'111", returnStdout: true).trim()
        input(
            id: 'userInput', message: 'Choice values: ',
            parameters: [
                [$class: 'ChoiceParameterDefinition', name:'Tags', choices: "${Tag}"],
                [$class: 'StringParameterDefinition', defaultValue: 'default', name:'Namespace'],
            ]
        )
    }
    stage('Second Stage') {
        println("${ChoiceParameterDefinition(Tags)}") //does not work
        println("${ChoiceParameterDefinition(Namespace)}") //does not work
    }
}

如何正确显示选择的参数?

标签: jenkinsgroovy

解决方案


您需要在脚本中编写输入步骤。这应该有效。

node {
    stage('Input Stage') {
        Tag = sh(script: "echo 123'\n'456'\n'789'\n'111", returnStdout: true).trim()
     script {
       def userInputs = 
       input(
              id: 'userInput', message: 'Choice values: ',
              parameters: [
                [$class: 'ChoiceParameterDefinition', name:'Tags', choices: "${Tag}"],
                [$class: 'StringParameterDefinition', defaultValue: 'default', name:'Namespace'],
            ]
        )
      
      env.TAGS = userInputs['Tags']
      env.NAMESPACE = userInputs['Namespace'] 
     }
    }
    stage('Second Stage') {
        echo "${env.TAGS}"
        echo "${env.NAMESPACE}"        
        
    }
}

参考:

Jenkins 声明式管道:如何从输入步骤中读取选择?

将 Jenkins 管道中的交互式输入读取到变量中


推荐阅读