Jenkinsfile,用户输入,选项中有变量

r55awzrz  于 12个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(97)

我想使用新的Jenkinsfile为新的工作。
我有一个jenkinsfile,我在一个单独的存储库:
1.我在bash中通过git ls-remote从另一个GitLab存储库获取分支。我把它们存储在变量中:branch1,branch2,branch3.
1.然后我想在用户输入选择中使用这些变量

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

1.然后我将使用${env.BRANCHDEPLOY} for git来部署选定的分支。
问题是,我不能在用户选择中使用变量。
我只需要让用户选择他们想要从另一个GitLab存储库部署的分支。

uqxowvwt

uqxowvwt1#

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

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

}

3zwtqj6y

3zwtqj6y2#

你有没有尝试过这样的事情,你应该能够通过。

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

 }

相关问题