如何在Jenkins文件中将Jenkins用户名和密码作为环境变量加载

3

Jenkins凭据中有几种类型的凭据。

其中之一,名为my_password的凭据是“Secret Text”类型,在Jenkinsfile中,我可以这样访问:

    environment {
        my_env_var = credentials('my_password')
    }

我现在创建了一个名为user_and_pass的“用户名和密码”类型的凭据,其中我可以在同一个凭据中设置两个字段。 我如何同时访问这两个参数,并将它们加载到环境变量中? 我在想像这样:

    environment {
        my_user = credentials('user_and_pass').someFunctionThatReturnsUser()
        my_pass = credentials('user_and_pass').someFunctionThatReturnsPass()

    }

但我觉得它不是那样起作用的。


1
请参阅 文档 - 当您定义用户名和密码密钥并使用凭据 MYVARNAME = credentials('user_and_pass') 时,将设置 MYVARNAME 为用户名:密码,并自动定义另外两个环境变量:MYVARNAME_USRMYVARNAME_PSW - Noam Helmer
3个回答

4
据我所知,我们有两种方法从凭证类型用户名和密码中提取数据:
  1. 通过Groovy函数withCredentials()的方式;
  2. 通过助手credentials()的方式。

withCredentials()

通过withCredentials提取凭证的语法:

withCredentials([usernamePassword(credentialsId: 'your-credentials-id', passwordVariable: 'PASSWORD_VAR', usernameVariable: 'USERNAME')]) {
    // your script could access $PASSWORD_VAR and $USERNAME_VAR
    // as environment variables
    //
    // note: PASSWORD_VAR, USERNAME_VAR is just aliases, you may change it to whatever you like
}

如果语法看起来对你来说太复杂和无聊,可以使用管道片段生成器,如下面所示

credentials()

通过credentials()提取凭据的语法:

environment {
    CREDS = credentials('your-credentials-id')
}
steps {
    // your code can access 
    // username as $CREDS_USR
    // and password as $CREDS_PSW
}

使用哪种方法?

这取决于凭据类型。对于用户名和密码,您可以使用任何一种方法 - 您喜欢哪种就用哪种。

credentials()助手支持以下类型(截至2022年底):

  • 秘密文本
  • 用户名和密码
  • 秘密文件

对于其他凭据类型,您必须使用withCredentials()

有关更多详细信息,请查看官方文档


0
当你从一个"用户名和密码"的秘密中获取凭据时,你会得到一个字符串,其中包含以冒号分隔的用户名和密码,格式为username:password
检查是否使用usernamePassword有效,就像这里一样。
这是来自Jenkins凭据绑定插件的。
withCredentials(
  [usernamePassword(credentialsId: 'mycreds', 
                    usernameVariable: 'USERNAME', 
                    passwordVariable: 'PASSWORD')]) {
  sh 'cf login some.awesome.url -u $USERNAME -p $PASSWORD'
}

0
在 Jenkins 仪表板上,点击“管理 Jenkins”,在安全标签下点击“管理凭据”,然后点击“系统”以创建全局凭证。这个凭证 ID(例如我的情况下为 SSH-Centos7)可以用于以下用途:
stage('Example SSH Username with password') {
environment {
    SSH_CREDS = credentials('SSH-Centos7')
}

最近的文档可在Jenkins官方文档中获取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接