如何根据 git 分支设置不同的 Jenkins 凭据?

How can I set different Jenkins credentials depending on the git branch?

我有一个 Jenkins Multibranch 项目,我需要根据我现在所在的 Git 分支设置一些凭据。例如:

# If I'm in master
MY_VARIABLE = credentials("master-credential")

# If I'm in develop
MY_VARIABLE = credentials("develop-credential")

# If I'm in QA
MY_VARIABLE = credentials("qa-credential")

现在,我尝试用不同的前缀命名我的变量并按以下方式设置它们:

pipeline {
    agent any
    environment {
        MY_VARIABLE = credentials("${env.BRANCH_NAME}-credential")
    }
    stages {
        stage("Start") {
            steps {
                # use MY_VARIABLE on my steps
            }
        }

但是没用。

我想我可以为我的凭据使用不同的域,然后在设置它们时指定域,但我没有在文档中找到如何在 Jenkinsfile 上指定域。

如果有人能帮助我,我将不胜感激。

谢谢!

虽然在 environment 指令中使用 credentials 的便利函数更清晰,但对于在 credentialsId 中像这样解析的内插字符串,您需要使用 withCredentials 插件和步骤方法。基于这个问题,我假设你想要的类型绑定是 string:

steps {
  withCredentials([string(credentialsId: "${env.BRANCH_NAME}-credential", variable: 'MY_VARIABLE')]) {
    # use MY_VARIABLE on my steps
  }
}

查看 documentation 了解更多信息。