【问题标题】:Access Jenkins credential store secrets with env groovy file使用 env groovy 文件访问 Jenkins 凭证存储秘密
【发布时间】:2018-10-31 17:19:23
【问题描述】:

我已经按照post 实现了为 env 变量加载 groovy 文件。

env.groovy:

env.DB_USER = 'testuser'
env.DB_PASS = credentials('DB_PASS')

Jenkinsfile

stages {
    stage ("print") {
        steps {
            load "${WORKSPACE}/env.groovy"
            echo "${env.DB_USER}"
            echo "${env.DB_PASS}"
        }
    }
}

输出:

[Pipeline] echo
testuser
[Pipeline] echo
@credentials(<anonymous>=DB_PASS)

在加载 groovy 环境变量文件时,DB_PASS 是否可以访问 Jenkins 凭证存储?

注意:我知道我可以访问 Jenkinsfile 的 environment { } 块中的环境变量。但由于我有这么多环境变量,我想知道是否可以在一个单独的 groovy 文件中引用它们。

【问题讨论】:

  • 所以您希望您的 echo "${env.DB_PASS}" 语句实际打印出密码?
  • 嗯,是的,暂时看看它是否有效。通常它只会像这样 ****** 屏蔽密码。但我从未见过它打印出@credentials(=DB_PASS),这让我觉得访问凭证存储不起作用。
  • 我认为这是因为在 jenkinsfile 中使用凭据('credential_id')来获得所需的行为。该语法不适用于 groovy 文件。我正试图让我的詹金斯起来。如果我发现了什么,我会更新。

标签: jenkins groovy


【解决方案1】:

暂时,尝试在你的 jenkinsfile 中这样做。

environment {
            DB_PASS = credentials('DB_PASS')
        }

但是您仍然无法回显您的 DB_PASS 环境变量,因为凭证类型变量保留了保密属性。还要记住,变量在 jenkinsfile 中有作用域。

【讨论】:

    【解决方案2】:

    如果你有

    environment {
                DB_PASS = credentials('DB_PASS')
            }
    

    如果你真的想看那个内容 你可以这样做

      sh """
         echo "$DB_PASS" | base64
                        
         """
    

    这将向您展示秘密,希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-16
      • 2021-09-09
      • 2011-03-18
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2023-02-25
      相关资源
      最近更新 更多