寻找Jenkins插件以允许每个分支的默认参数值

时间:2017-10-05 03:23:48

标签: jenkins jenkins-plugins jenkins-pipeline continuous-deployment

我有一个多分支管道作业集,如果git repo有新的变化可以每分钟由Jenkinsfile构建。如果分支名称是某种格式,我有一个步骤将工件部署到环境中。我希望能够在每个分支的基础上配置环境,而无需在每次创建新的此类分支时编辑Jenkinsfile。这是我的Jenkins文件的粗略草图:

pipeline {
  agent any

  parameters {
    string(description: "DB name", name: "dbName")
  }

  stages {
    stage("Deploy") {
      steps {
        deployTo "${params.dbName}"
      }
    }
  }
}

是否有Jenkins插件可以让我在作业配置页面中为每个分支定义dbName参数的默认值?理想情况下类似于下面的模型:

plugin UI mock-up

应该能够重新排序这些值以设置优先级。插件在第一个之后停止检查匹配。匹配可以是精确的或正则表达式。

如果目前还没有这样的插件,请指出我能想到的最接近的开源插件。我可以将它作为编写自定义插件的基础。

3 个答案:

答案 0 :(得分:1)

您可以用作自定义插件的起点的可能插件是Dynamic Parameter Plugin

答案 1 :(得分:0)

不是你的问题的答案,但可能是一种解决方法......

我不知道参数列表的其余部分是什么样的,但如果它是静态列表,您可能会使用"静态列表使用默认"选项作为第一个。

当作业运行时,如果值是"使用默认",则从存储在SCM分支中的文件中收集默认值并使用它。

答案 2 :(得分:0)

这是一种解决方法:

使用Jenkins Config File Provider plugin创建一个配置json,并在每个分支中定义参数。示例:

 {
  "develop": {
    "dbName": "test_db",
    "param2": "value"
  },
  "master": {
    "dbName": "prod_db",
    "param2": "value1"
  },
  "test_branch_1": {
    "dbName": "zss_db",
    "param2": "value2"
  },
  "default": {
    "dbName": "prod_db",
    "param2": "value3"
  }
}

在您的Jenkins文件中:

final commit_data = checkout(scm)
BRANCH = commit_data['GIT_BRANCH']
configFileProvider([configFile(fileId: '{Your config file id}', variable: 'BRANCH_SETTINGS')]) {
                def config = readJSON file:"$BRANCH_SETTINGS"
                def branch_config = config."${BRANCH}"

                if(branch_config){
                    echo "using config for branch ${BRANCH}"
                }
                else{
                    branch_config = config.default                      
                }
                echo branch_config.'dbName'
}

然后可以使用branch_config.'dbName'branch_config.'param2'等。甚至可以将其设置为全局变量,然后在整个管道中使用。

可以通过Jenkins UI(由插件提供)轻松编辑配置文件,以在将来提供新的分支/参数。这不需要访问任何非沙箱方法。