首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在管道作业中使用凭据参数从Jenkins凭据管理器读取机密时出现问题

在管道作业中使用凭据参数从Jenkins凭据管理器读取机密时出现问题
EN

Stack Overflow用户
提问于 2019-02-23 03:38:35
回答 1查看 1.1K关注 0票数 0

我有一个Jenkins Pipeline作业,它在Jenkinsfile中使用了一个保密值

代码语言:javascript
复制
pipeline {
  agent any
  stages {
    stage('Test') {
      steps {
        echo "DOCKER_REGISTRY_USER is $DOCKER_REGISTRY_USER"
      }
    }
  }
}

密码值在凭据管理器中存储为ID为DOCKER_REGISTRY_USERsecret text。我通过引用来自Credential Manager的秘密文本来参数化我的Jenkins管道作业:

我尝试如上所示在Jenkinsfile中读取此值,但得到了以下输出:

代码语言:javascript
复制
[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 ParameterPassword Parameter,那么就会打印出密码值:

所以我要么没有正确使用Credential Parameter,要么就是有个bug。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-23 04:04:47

这就是它应该如何工作的。要实际使用对Jenkins凭证的引用,您需要使用credentials binding plugin。例如,如果您的凭据是“用户名和密码”类型,您将执行以下操作:

代码语言:javascript
复制
withCredentials([userNamePassword: $DOCKER_REGISTRY_USER, usernameVariable: 'USER', passwordVariable: 'PASSWORD']) {
  echo "DOCKER_REGISTRY_USER is $USER and password is $PASSWORD"
}

请注意,Jenkis不会在输出中显示私有凭据,但会正确填充该值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54834023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档