我有一个在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管道作业:
我正在尝试在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。
这就是它应该如何运作。要实际使用对Jenkins凭据的引用,您需要使用credentials binding plugin。例如,如果您的凭据类型为“用户名和密码”,您将执行以下操作:
withCredentials([userNamePassword: $DOCKER_REGISTRY_USER, usernameVariable: 'USER', passwordVariable: 'PASSWORD']) {
echo "DOCKER_REGISTRY_USER is $USER and password is $PASSWORD"
}
注意Jenkis不会在输出中显示私有凭据,但是它的值是正确填充的。