我有一个Jenkins Pipeline作业,它在Jenkinsfile中使用了一个保密值
pipeline {
agent any
stages {
stage('Test') {
steps {
echo "DOCKER_REGISTRY_USER is $DOCKER_REGISTRY_USER"
}
}
}
}密码值在凭据管理器中存储为ID为DOCKER_REGISTRY_USER的secret text。我通过引用来自Credential Manager的秘密文本来参数化我的Jenkins管道作业:

我尝试如上所示在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 Parameter或Password Parameter,那么就会打印出密码值:

所以我要么没有正确使用Credential Parameter,要么就是有个bug。
发布于 2019-02-23 04:04:47
这就是它应该如何工作的。要实际使用对Jenkins凭证的引用,您需要使用credentials binding plugin。例如,如果您的凭据是“用户名和密码”类型,您将执行以下操作:
withCredentials([userNamePassword: $DOCKER_REGISTRY_USER, usernameVariable: 'USER', passwordVariable: 'PASSWORD']) {
echo "DOCKER_REGISTRY_USER is $USER and password is $PASSWORD"
}请注意,Jenkis不会在输出中显示私有凭据,但会正确填充该值。
https://stackoverflow.com/questions/54834023
复制相似问题