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循环,您可以拥有更多选项

但不是一个班轮

希望这有帮助