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
             '''
        }
    }
}