在Jenkins作业的Bash脚本中引用全局凭据

在Jenkins作业的Bash脚本中引用全局凭据,jenkins,Jenkins,我创建了全局凭据(用户名、密码)并提供了自定义ID。如何在Bash脚本中引用此ID?我已经在我的作业配置中选中了“注入全局密码” 我试过了,但没用 假设全局凭据的ID为“USER\u PASSWORD”,我的bash脚本已尝试: echo ${USER_PASSWORD} echo ${env:USER_PASSWORD} 不起作用。我在网上读了一些帖子,我需要查询Jenkins API来获取凭证。听起来不对。使用,全局凭据可能会被注入到构建上下文中。通过选中作业配置页面的生成环境部分中标记为

我创建了全局凭据(用户名、密码)并提供了自定义ID。如何在Bash脚本中引用此ID?我已经在我的作业配置中选中了“注入全局密码”

我试过了,但没用

假设全局凭据的ID为“USER\u PASSWORD”,我的bash脚本已尝试:

echo ${USER_PASSWORD}
echo ${env:USER_PASSWORD}
不起作用。我在网上读了一些帖子,我需要查询Jenkins API来获取凭证。听起来不对。

使用,全局凭据可能会被注入到构建上下文中。通过选中作业配置页面的生成环境部分中标记为“使用密文”或“文件”的复选框,可以完成此操作。添加用户名和密码(分开)绑定,选择您创建的特定凭据,并定义用户名和密码变量

下面是一个正在使用的凭据绑定插件示例,但使用冒号分隔的用户名/密码变量,而不是两个单独的变量:

然后可以使用shell脚本中定义的用户名和/或密码变量。假设用户名值为
foo
,密码值为
bar

用户名和密码绑定,变量名
用户\u凭证

echo $USER_CREDENTIALS # -> foo:bar
用户名和密码(分开)绑定,变量名
USER\u ID
USER\u password

echo $USER_ID          # -> foo
echo $USER_PASSWORD    # -> bar
如果您的凭证ID为“USER\u PASSWORD”,则必须使用以下命令读取:
USER\u credentials=credentials('USER\u PASSWORD')
。执行此操作后,用户名和密码在以下环境变量中可用:
USER\u CREDENTIALS\u USR
USER\u CREDENTIALS\u PSW
。Jenkins总是在变量名称中添加
\u USR
\u PSW
结尾

示例管道(我没有完全测试它,但应该可以工作):

如果您得到
***
(四个星号)作为输出,那么就可以了-Jenkins会在控制台输出中自动屏蔽用户名和密码


更多信息:。

对于如何在bash脚本中使用参数化凭据参数username和password作为环境变量,我找不到一个直接的答案。以下几点对我很有用:

  • 添加凭据参数。我称之为“凭证”。凭证类型“用户名和密码”

  • 在生成环境中,选中“用户机密文本”或“文件”

  • 添加“用户名和密码(分隔)”绑定。我将用户名变量设置为USER,密码变量设置为PW。对于凭据,请选择“参数表达式”并输入第一步中的名称。在本例中,它将是${Credentials}。

  • 现在bash脚本可以使用
    ${USER}
    ${PW}


  • 在我的情况下,我决定与凭证


    在我的例子中,我使用下面的代码来读取Active Directory中配置的凭据

    Choices Paramater Plugin's Groovy Script to populate the choices.
    
            def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
                com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
                jenkins.model.Jenkins.instance
            )
        
        def user = creds[0].username
        def pwd= creds[0].password
        def gettags = ("git ls-remote --tags https://$user:$pwd@github.com/<yourRepo>.git").execute()
    
    Choices参数化插件的Groovy脚本来填充选项。
    def creds=com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
    jenkins.model.jenkins.instance
    )
    def user=creds[0]。用户名
    def pwd=creds[0]。密码
    def gettags=(“git ls remote--tags https://$user:$pwd@github.com/.git“.execute()
    
    这样,凭证就不会硬编码在脚本中,这使得如果我们想要更改生成的令牌,它是可管理的
    注意:我们使用GitHubTokens来执行操作,而不是密码

    您甚至可以通过选择参数表达式来获取要作为作业参数注入的凭据。这很好:)这并没有回答参数化访问多个凭据的问题。Danny Hajicek的回答是这样的。这应该被接受为答案。
    stage('Commit') {
       withCredentials([usernamePassword(credentialsId: 'hash', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
          sh 'svn commit xxx.ear -m "Comment" --username $USERNAME --password $PASSWORD'
       }
    }
    
    Choices Paramater Plugin's Groovy Script to populate the choices.
    
            def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
                com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
                jenkins.model.Jenkins.instance
            )
        
        def user = creds[0].username
        def pwd= creds[0].password
        def gettags = ("git ls-remote --tags https://$user:$pwd@github.com/<yourRepo>.git").execute()