jenkins - 使用凭证参数在多分支管道作业中从 Jenkins 凭证管理器读取机密时遇到问题
问题描述
我有一个 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}"
}
}
}
}
推荐阅读
- android - error while sha release key for my react native project
- laravel - Laravel 使用大写表名(如“AUTHS”)进行身份验证
- javascript - 如何根据每个用户当前的游戏创建字典?不和谐.js
- javascript - 基于 Node.js 中的多个条件对数组进行排序
- android - 如何将符号列表响应从 fixer.io 转换为 json arraylist?(如何将 JSON 键值对转换为 JSON Array)
- flutter - 可以flutter调节桌面亮度
- python - Python 函数显示最高出现的数字,如果有平局则返回两者。数字 = [1,2,3,2,1,2,2,4,5,4,4,4]
- huggingface-transformers - HuggingFace 'TFEmbeddings' 对象没有属性 'word_embeddings'
- ios - 如何在 iOS 的 info.plist 中不使用“SceneConfiguration”连接 SceneDelegate?
- java - 如何创建地图
> 可以使用 Spring 的 @Value 注入的属性文件中的属性