带有用户输入和选择变量的 Jenkinsfile

Hus*_*les 3 jenkins jenkins-pipeline

我想使用新的 Jenkinsfile 来完成新的工作。

我有一个独立存储库中的 jenkinsfile:

  1. 我通过 bash 从另一个 GitLab 存储库获取分支git ls-remote。我将它们存储在变量中:branch1、branch2、branch3...

  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}"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我将使用${env.BRANCHDEPLOY}git 部署选定的分支。

问题是我无法使用用户选择中的变量来处理它。

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

Cha*_*yak 5

您只是犯了一个错误,在必须由脚本替换的变量周围加上单引号,因此只需将单引号更改为双引号即可。

"${branch1}\n${branch2}\n${branch3}"
Run Code Online (Sandbox Code Playgroud)

示例:第二阶段打印所选选项

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}"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}