使用凭据参数从管道作业中的Jenkins Credential Manager读取秘密时遇到问题

问题描述 投票:0回答:1

我有一个在Jenkinsfile中使用秘密值的Jenkins管道作业:

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 Parameter我使用String ParameterPassword Parameter - 然后秘密值被打印出来:

enter image description here

所以我要么没有正确使用Credential Parameter,要么就是有bug。

jenkins jenkins-pipeline
1个回答
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不会在输出中显示私有凭据,但是它的值是正确填充的。

© www.soinside.com 2019 - 2024. All rights reserved.