使用凭证参数在管道作业中从Jenkins凭证管理器读取问题难以解决

时间:2019-02-22 19:38:35

标签: jenkins jenkins-pipeline

我有一个Jenkins Pipeline作业,该作业使用Jenkinsfile中的秘密值:

pipeline {
  agent any
  stages {
    stage('Test') {
      steps {
        echo "DOCKER_REGISTRY_USER is $DOCKER_REGISTRY_USER"
      }
    }
  }
}

该机密值以secret text的身份存储在凭据管理器中,其ID为DOCKER_REGISTRY_USER。我通过参考Credential Manager中的秘密文本来对Jenkins管道作业进行参数化:

enter image description here

如上所述,我试图在Jenkinsfile中读取此值,但得到以下输出:

[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] echo
DOCKER_REGISTRY_USER is DOCKER_REGISTRY_USER
[Pipeline] sh

它仅显示凭证的ID,但不显示值。我以为这可能是詹金斯(Jenkins)安全机制,但是当我尝试对Freestyle作业执行类似操作时,会得到屏蔽输出(******)。

但是,如果我在管道作业中使用参数而不是Credential ParameterString Parameter而不是Password Parameter,那么有效的方法就是输出秘密值:< / p>

enter image description here

所以我要么没有正确使用Credential Parameter,要么有错误。

1 个答案:

答案 0 :(得分:1)

这就是它应该如何工作的。要实际使用对Jenkins凭证的引用,您需要使用credentials binding plugin。例如,如果您的凭据的类型为“用户名和密码”,则您将执行以下操作:

withCredentials([userNamePassword: $DOCKER_REGISTRY_USER, usernameVariable: 'USER', passwordVariable: 'PASSWORD']) {
  echo "DOCKER_REGISTRY_USER is $USER and password is $PASSWORD"
}

请注意,Jenkis不会在输出中显示私人凭据,但会正确填充其值。

相关问题