Jenkins文件,用户输入,变量在选项中

Jenkins文件,用户输入,变量在选项中,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我想用新的Jenkins文件来做新的工作 我在solo存储库中有Jenkinswich文件: 我通过bash中的gitlsremote从另一个gitlab存储库获得分支。我将它们存储在变量中:branch1,branch2,brach3 然后我想在用户输入选择中使用这些变量 script { env.BRANCHDEPLOY = input message: 'User input required', ok: 'Deploy!', parameter

我想用新的Jenkins文件来做新的工作

我在solo存储库中有Jenkinswich文件:

  • 我通过bash中的gitlsremote从另一个gitlab存储库获得分支。我将它们存储在变量中:branch1,branch2,brach3
  • 然后我想在用户输入选择中使用这些变量

    script {                
      env.BRANCHDEPLOY = input message: 'User input required',
      ok: 'Deploy!',
      parameters: [choice(name: 'Branch to deploy', choices: '${branch1}\n${branch2}\n${branch3}', description: 'What branch you wont deploy?')]
    }
    echo "${env.BRANCHDEPLOY}"
    
  • 然后我将使用git的
    ${env.BRANCHDEPLOY}
    部署所选的分支

  • 问题是我无法在用户选择中使用变量


    我只需要让用户从另一个gitlab存储库中选择要部署的分支

    你试过这样的方法吗,你应该能通过考试

    parameters {
        string(branchName: 'feature_x')
    }
    scm {
        checkout(
          branches: [[name: '*/$branchName']], 
    ....
    
     }
    

    你只是犯了一个错误,在你的变量周围用单引号括起来,而这些变量必须被脚本替换,所以只要把单引号改成双引号就行了

    "${branch1}\n${branch2}\n${branch3}"
    
    示例:第二阶段打印所选选项

    pipeline {
    agent any
    
    environment{
        branch1 = 'stack'
        branch2 = 'over'
        branch3 = 'flow'
    }
    
    stages {
        stage('Stage-One') {
            steps {
                script {                
                    env.BRANCHDEPLOY = input message: 'User input required',
                    ok: 'Deploy!',
                    parameters: [choice(name: 'Branch to deploy', choices: "${branch1}\n${branch2}\n${branch3}", description: 'What branch you wont deploy?')]
                }
            }
        }
        stage('Stage-Two'){
            steps{
                sh "echo ${BRANCHDEPLOY}"
            }
        }
    }
    

    }

    谢谢Chandan Nayak,但我发现双引号错误。“没有这样的属性:class:groovy.lang.Binding的branch1”请先使用一个硬编码的环境来测试它,例如,确保您可以打印带有以下内容的sh“echo${env.branch1}”:环境{branch1='stack'},我从sh“echo${env.branch1}获得结果“stack”。但在输入中它不起作用。是的,使用env=environment{},请检查我的代码段它起作用。请使用
    BRANCHDEPLOY=input message:
    而不是
    env.BRANCHDEPLOY=input message:
    好像多个参数env会强制将结果映射到字符串