Jenkinsfile,用户输入中包含变量选项

时间:2017-06-06 12:19:15

标签: jenkins jenkins-pipeline

我想使用新的Jenkins文件来完成新工作。

我有独立存储库中的jenkinsfile:

  1. 我在bash中通过git ls-remote从另一个gitlab存储库获取分支。我将它们存储在变量中:branch1,branch2,brach3 ....
  2. 然后我想在用户输入选择中使用这些变量

    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}"
    
  3. 然后我将使用${env.BRANCHDEPLOY} git来部署所选分支。

  4. 问题是我无法在用户选择中使用变量。

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

2 个答案:

答案 0 :(得分:4)

你只是错误地在变量周围做单引号,这些变量必须由脚本替换,所以只需将单引号更改为双引号即可。

"${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}"
        }
    }
}

}

答案 1 :(得分:0)

你是否尝试过类似的东西,你应该能够通过tha var。

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

 }