使用凭据参数插件访问 Jenkins 中的凭据

问题描述 投票:0回答:3

我的 Jenkins 盒子需要通过 REST api 访问 Stash 和 Jira。为此,我需要存储他们的凭据。

我所做的方式是通过凭据参数,它要求我提供名称、凭据类型、必需、默认值和说明。

我将名称定义为 CREDENTIAL_PARAMETER,在类型中将其设置为“带密码的用户名”,然后从默认值的列表中选择一个凭据。

接下来在“构建”部分中,我定义应该执行一个 shell,类似于

echo $CREDENTIAL_PARAMETER

我期望得到类似“用户名:密码”的内容作为 CREDENTIAL_PARAMETER。但是,我得到了一个哈希值,我认为这就是检索用户名和密码的方法。

如何使用 bash 根据哈希值获取凭据?

jenkins jenkins-plugins
3个回答
27
投票

作为给自己的注释,希望这能对其他人有所帮助,我将比@Alexandre Santos 更深入一些,尽管他的回答非常有帮助。

需要注意的重要一点是,Credentials ParameterCredentials Binding 之间存在差异。

如果您使用参数化构建,则可以添加引用凭据绑定的凭据参数。当您运行构建时,您会注意到有一个环境变量与您的凭证存储中的凭证 GUID 相关。

要使其真正有用,您必须将“凭据绑定”注入您的环境中。

前往作业定义的构建环境部分。选中使用秘密文本或文件。这将实际上将秘密注入到您的构建环境中。此处可以使用之前创建的“凭据参数”来让您选择不同的凭据参数。

对于文件,它将把文件拖放到工作区中的某个位置(?),然后注入一个带有文件完整路径的秘密环境变量。

Cloudbees 的这个博客应该可以帮助解决剩下的问题。


18
投票

可以,但是需要安装插件 https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Binding+Plugin。如果没有它,您得到的只是可以找到凭证的哈希值。

一旦您拥有凭据,Jenkins 会将它们放置为会话环境,可以检索..

请注意,仅当在“构建环境”部分中启用“使用秘密文本或文件”时,凭据才可用。

定义完所有内容后,用户名和密码可以作为两个不同的字段传递,也可以作为仅一个由“:”分隔的字段传递


0
投票

作业配置中“凭据参数”附近的问号按钮(?)显示以下线索:

> 出于安全原因,凭证不会直接公开,而是公开凭证的 ID。

  • 在执行期间,“CREDENTIAL_PARAMETER”的值将公开为环境变量 env.CREDENTIAL_PARAMETER,其中将包含所选凭证的凭证 ID。

  • credential-ID 可用于使用 usernamePassword(credentialsId: env.CREDENTIAL_PARAMETER, ..) 将实际的用户名/密码作为自定义变量提供给作业脚本,请参见下面的示例:

#!/bin/groovy
pipeline {
    stages {
        stage('Provide "Credentials Parameter" to my shell script') {
            steps {
                withCredentials([usernamePassword(
                        credentialsId: env.CREDENTIAL_PARAMETER,
                        usernameVariable: 'MY_USERNAME',
                        passwordVariable: 'MY_PASSWORD')]) {
                    script {
                        sh( script: "./my_shell_script.sh" )   // echo "$MY_USERNAME, $MY_PASSWORD"
                    }
                }
            }
        }
    }
}

参考文献(查找“credentialsId”):

© www.soinside.com 2019 - 2024. All rights reserved.