我有一个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管道作业进行参数化:
如上所述,我试图在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
,那么有效的方法就是输出秘密值:< / p>
所以我要么没有正确使用Credential Parameter
,要么有错误。
答案 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不会在输出中显示私人凭据,但会正确填充其值。