如何在jenkins文件中加载jenkins用户名和密码作为env vars

在 Jenkins 凭证中,我有几种类型的凭证。其中之一,称为 my_password 是“秘密文本”类型,在 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()

    }

但我不认为它是这样工作的。

stack overflow how to load jenkins username and password as env vars in a jenkins file
原文答案

答案:

作者头像

当您从 "username and password" secret 取回凭据时,您会得到一个字符串,其中包含用户名和密码,由冒号分隔,格式为 username:password

检查使用 usernamePassword 是否有效,如 in here
它来自 Jenkins Credentials Binding Plugin

withCredentials(
  [usernamePassword(credentialsId: 'mycreds', 
                    usernameVariable: 'USERNAME', 
                    passwordVariable: 'PASSWORD')]) {
  sh 'cf login some.awesome.url -u $USERNAME -p $PASSWORD'
}
作者头像

在 Jenkins 仪表板中,单击管理 Jenkins,单击安全选项卡下的管理凭据,单击系统以创建全局凭据。这个凭证 ID(在我的例子中是 SSH-Centos7)可以如下使用:

stage('Example SSH Username with password') {
environment {
    SSH_CREDS = credentials('SSH-Centos7')
}

Jenkins official documentation 上提供的最新文档