Jenkinsfile:如何根据分支名称参数化凭证 ID?
Jenkinsfile: How to parameterise Credential Id as per branch name?
我在我的 Jenkinsfile 中使用凭证插件,如下所示-
stage("stage name"){
steps{
withCredentials([usernamePassword(credentialsId: 'credId', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){
sh'''
statement 1
statement 2
'''
}
}
}
根据新要求,我需要根据分支名称使用不同的凭据 ID。这意味着如果分支名称是 master,我应该使用 credentialsId:'mastercred',对于其他分支,我应该使用 credentialsId:'othercred'。 "withCredentials" 块中的代码将相同,唯一的变化是 credentialsId。
我不想重复代码。有什么方法可以参数化这个 credentialsId 吗?
您可以读取分支名称变量,并将 credentialId
变量设置为在 withCredentials 上使用即可。例如:
stage("stage name"){
steps{
if (env.BRANCH_NAME == "master"){
credentialId = "mastercred"
}else
credentialId = "othercred"
}
withCredentials([usernamePassword(credentialsId: "${credentialId}", usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){
sh'''
statement 1
statement 2
'''
}
}
}
我在我的 Jenkinsfile 中使用凭证插件,如下所示-
stage("stage name"){
steps{
withCredentials([usernamePassword(credentialsId: 'credId', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){
sh'''
statement 1
statement 2
'''
}
}
}
根据新要求,我需要根据分支名称使用不同的凭据 ID。这意味着如果分支名称是 master,我应该使用 credentialsId:'mastercred',对于其他分支,我应该使用 credentialsId:'othercred'。 "withCredentials" 块中的代码将相同,唯一的变化是 credentialsId。
我不想重复代码。有什么方法可以参数化这个 credentialsId 吗?
您可以读取分支名称变量,并将 credentialId
变量设置为在 withCredentials 上使用即可。例如:
stage("stage name"){
steps{
if (env.BRANCH_NAME == "master"){
credentialId = "mastercred"
}else
credentialId = "othercred"
}
withCredentials([usernamePassword(credentialsId: "${credentialId}", usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){
sh'''
statement 1
statement 2
'''
}
}
}