我有一个Jenkins 多分支 管道作业,它在中使用秘密值Jenkinsfile:
Jenkinsfile
pipeline { agent any stages { stage('Test') { steps { echo "DOCKER_REGISTRY_USER is ${env.DOCKER_REGISTRY_USER_NSV}" } } } }
机密值作为机密文本存储在Credentials Manager中,其ID为DOCKER_REGISTRY_USER_NSV:
DOCKER_REGISTRY_USER_NSV
我正在尝试如上所述在Jenkinsfile中读取此值,但得到以下输出,该输出打印出null我的机密值:
null
[Pipeline] } [Pipeline] // stage [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Test) [Pipeline] echo DOCKER_REGISTRY_USER is null [Pipeline] sh
我还尝试像这样在管道中引用秘密文本:
echo "DOCKER_REGISTRY_USER is ${DOCKER_REGISTRY_USER_NSV}"
但是然后在运行Jenkins作业时出现此错误:
groovy.lang.MissingPropertyException: No such property: DOCKER_REGISTRY_USER_NSV for class: groovy.lang.Binding at groovy.lang.Binding.getVariable(Binding.java:63) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:264)
我认为我需要将该凭证绑定到该工作,但是我看不到针对多分支管道工作(以Freestyle或Pipeline工作为方式)执行此操作的选项。
如何在多分支管道作业中使用秘密凭证?
您可以使用凭据()帮助方法来存档您的目的。
pipeline { agent any environment { DOCKER_REGISTRY_USER = credentials('DOCKER_REGISTRY_USER_NSV') // put the ID of credential as credentials()'s parameter. } stages { stage('Test') { steps { echo "DOCKER_REGISTRY_USER is ${DOCKER_REGISTRY_USER}" } } } }