如何在jenkinsfile中单独获取存储在Jenkins凭据中的用户名密码

Ant*_*ony 9 jenkins jenkins-pipeline

我已将用户名和密码存储为jenkins中的凭据.现在我想在我的Jenkinsfile中使用它们.

我使用withCredentialsDSL,但是,我不知道如何将用户名密码作为单独的变量,所以我可以在我的命令中使用它们.

这就是我正在做的事情:

withCredentials([usernameColonPassword(credentialsId: 'mycreds', variable: 'MYCREDS')]) {
  sh 'cf login some.awesome.url -u <user> -p password'
}
Run Code Online (Sandbox Code Playgroud)

我怎么能分别用户名和密码呢?我尝试过,${MYCREDS.split(":")[0]}但似乎没有用.

Gre*_*icz 9

这是StephenKing答案的简单版本

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

}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,那在当时是不可能的,但如今是更好的选择。 (2认同)

Ste*_*ing 8

您可以使用UsernamePasswordMultiBinding以获取单独值的凭据数据:

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId:'mycreds',
  usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']
])
Run Code Online (Sandbox Code Playgroud)

所以以下内容适用于您的情况:

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId:'mycreds', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
  sh 'cf login some.awesome.url -u $USERNAME -p $PASSWORD'
}
Run Code Online (Sandbox Code Playgroud)