无法使用凭据参数在多分支管道作业中从 Jenkins 凭据管理器读取机密
Trouble reading Secrets from Jenkins Credential Manager in Multi Branch Pipeline job using Credential Parameter
我有一个 Jenkins 多分支 管道作业,它使用 Jenkinsfile
:
中的秘密值
pipeline {
agent any
stages {
stage('Test') {
steps {
echo "DOCKER_REGISTRY_USER is ${env.DOCKER_REGISTRY_USER_NSV}"
}
}
}
}
机密值作为机密文本存储在凭据管理器中,ID 为 DOCKER_REGISTRY_USER_NSV
:
我正在尝试读取 Jenkinsfile 中的这个值,如上所示,但我得到以下输出,为我的秘密打印出值 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)
我想我需要将该凭证绑定到作业,但我没有看到为多分支管道作业执行此操作的选项,就像您可以为自由式或管道作业那样。
如何在多分支管道作业中使用秘密凭证?
您可以使用 credentials() 辅助方法来归档您的目的。
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}"
}
}
}
}
我有一个 Jenkins 多分支 管道作业,它使用 Jenkinsfile
:
pipeline {
agent any
stages {
stage('Test') {
steps {
echo "DOCKER_REGISTRY_USER is ${env.DOCKER_REGISTRY_USER_NSV}"
}
}
}
}
机密值作为机密文本存储在凭据管理器中,ID 为 DOCKER_REGISTRY_USER_NSV
:
我正在尝试读取 Jenkinsfile 中的这个值,如上所示,但我得到以下输出,为我的秘密打印出值 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)
我想我需要将该凭证绑定到作业,但我没有看到为多分支管道作业执行此操作的选项,就像您可以为自由式或管道作业那样。
如何在多分支管道作业中使用秘密凭证?
您可以使用 credentials() 辅助方法来归档您的目的。
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}"
}
}
}
}