Jenkins 基于参数';环境选择
我们有一个管道脚本,它有一个基于环境的choices参数。例如:Jenkins 基于参数';环境选择,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我们有一个管道脚本,它有一个基于环境的choices参数。例如: parameters { choice(choices: 'Development\nStaging\nProduction', description: "Select an environment to run tests against.", name: 'Environment') } 基于此选择,我想加载几个由环境表示的变量,但我很难选择“参数化凭据”。我正在尝试做这样的事情: stage("Run
parameters {
choice(choices: 'Development\nStaging\nProduction', description:
"Select an environment to run tests against.", name: 'Environment')
}
基于此选择,我想加载几个由环境表示的变量,但我很难选择“参数化凭据”。我正在尝试做这样的事情:
stage("Run tests") {
environment {
ENV="${params.Environment}"
DBPASS=credentials("$ENV:dbpass") # <-- this doesn't work!
MQPASS=credentials("$ENV:mqpass")
...
...
5 more credentials here based on environment
}
}
阶段(“运行测试”){
环境{
ENV=“${params.Environment}”
DBPASS=credentials(“$ENV:DBPASS”)#根据doc,在声明性管道中,参数的值在steps上下文中可用(这意味着它们在任何其他上下文中都不可用,例如环境)
您可以使用步骤,而不是使用environment指令公开cred,该步骤允许您将凭据分配给变量,并且由于这是一个步骤,因此您可以在步骤上下文中调用它,在该上下文中还可以访问参数的值
例如:
pipeline {
agent any
parameters {
choice(choices: 'Development\nStaging\nProduction',
description: "Select an environment to run tests against.",
name: 'Environment')
}
stages {
stage ('Run tests') {
steps {
withCredentials([string(credentialsId: "${params.Environment}:dbpass", variable: 'DBPASS',
string(credentialsId: "${params.Environment}:mqpass", variable: 'MQPASS')]) {
// Do stuff
}
}
}
}
}
}