我有一个Jenkins管道作业,并且它的凭据参数类型为“带密码的用户名”。我们将其称为凭据参数DB_USER_CRED
。
现在,我已经在Jenkins上存储了2个类型为“带密码的用户名”的凭据,分别称为DB_USER1
和DB_USER2
。因此,我的工作是这样的:
withCredentials([
usernamePassword(credentialsId: 'DB_USER1', usernameVariable: 'DB_USER1_NAME', passwordVariable: 'DB_USER1_PASSWORD'),
usernamePassword(credentialsId: 'DB_USER2', usernameVariable: 'DB_USER2_NAME', passwordVariable: 'DB_USER2_PASSWORD')
]){
因此,当用户运行作业时,他/她可以选择DB_USER1
或DB_USER2
来填充参数DB_USER_CRED
。然后,我可以通过检查$DB_USER_CRED
来确定使用了哪个用户。但是,是否有办法从DB_USER_CRED
获取密码?我不想将$DB_USER_CRED
与$DB_USER1_NAME
和$DB_USER2_NAME
进行比较,以找出要使用的密码,即$DB_USER1_PASSWORD
或$DB_USER2_PASSWORD
。原因是可能有10个可能的数据库用户可以访问此作业,因此必须将$DB_USER_CRED
与所有用户进行比较是不现实的。谢谢。
答案 0 :(得分:0)
因此,使用上面的示例,解决方案是:
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: env.DB_USER_CRED, usernameVariable: 'DB_USER_CRED_USERNAME', passwordVariable: 'DB_USER_CRED_PASSWORD']])
{
// The password is $DB_USER_CRED_PASSWORD
}
我的工作还使用其他存储在Jenkins中的凭证,可以通过以下方式附加它们:
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: env.DB_USER_CRED, usernameVariable: 'DB_USER_CRED_USERNAME', passwordVariable: 'DB_USER_CRED_PASSWORD'],
usernamePassword(credentialsId: 'OTHER_CRED', usernameVariable: 'OTHER_CRED_NAME', passwordVariable: 'OTHER_CRED_PASSWORD')
])