Jenkins 如何在环境指令中有条件地传递凭证绑定
这不起作用:Jenkins 如何在环境指令中有条件地传递凭证绑定,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,这不起作用: environment { Pass = "${blah == 'yes' ? credentials('somecred') : credentials('otherCred')}" 我可以直接将env var设置为credentials(),但当尝试在字符串插值器中使用三元语句时(如上文所述),它不会传递实际的creds,而是传递一个stringized对象 在Environment{}指令中是否有一行代码用于执行此操作 Jenkins允许您将字符串插值器潜入环境块来
environment {
Pass = "${blah == 'yes' ? credentials('somecred') : credentials('otherCred')}"
我可以直接将env var设置为credentials(),但当尝试在字符串插值器中使用三元语句时(如上文所述),它不会传递实际的creds,而是传递一个stringized对象
在Environment{}指令中是否有一行代码用于执行此操作
Jenkins允许您将字符串插值器潜入环境块来计算代码,这里还有其他groovy构造可以使用吗?Jenkins管道dsl让我哭泣
# Define outside of pipeline block
def MYENV_VAR = somevar == 'yes' ? 'cred-id-1' : 'cred-id-2'
pipeline {
agent any
environment {
MYENV = credentials("${MYENV_VAR}")
如果希望根据条件使用不同的凭据,可以通过以下示例完成此操作:
stage ("Example") {
steps {
script {
if ( params.TEST_PARAMETER == "test_value1" ) {
withCredentials([string(credentialsId: env.CREDENTIALS_1, variable: 'SOME_VARIABLE')]) {
yourFunction()
}
}
else {
withCredentials([string(credentialsId: env.CREDENTIALS_2, variable: 'SOME_VARIABLE')]) {
yourFunction()
}
}
}
}
}
您需要在文件末尾定义yourFunction
。在这种情况下,当作业中的TEST\u参数
为TEST\u值1
时,将使用Jenkins凭证列表中的CREDENTIALS\u 1
。当TEST\u参数
不同时,将使用CREDENTIALS\u 2
CREDENTIALS。通过将其修改为case循环,您可以拥有更多选项
但不是一个班轮
希望这有帮助