config-file-provider-plugin:在jenkinsfile的multipipeline config文件夹中创建新的配置

时间:2019-06-11 17:57:46

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy

我正在使用多分支管道,并且希望具有分支特定的配置。我目前有一个默认配置,我想将其克隆到ID为“ $ {BRANCH_NAME} _config”的配置。我正在使用默认的jenkins文件插件,因此存储库中没有jenkins代码,并使用Config-file-provider-plugin进行配置文件处理,并取得了一些进展。

我目前可以使用以下代码创建全局配置:

configFileProvider([configFile(fileId: 'DEFAULT_JSON_CONFIG', variable: 'default_config_content')]) {
    def instance = Jenkins.getInstance()
    def provider = instance.getExtensionList('org.jenkinsci.plugins.configfiles.json.JsonConfig$JsonConfigProvider')[0]
    def config = new org.jenkinsci.plugins.configfiles.json.JsonConfig("${BRANCH_NAME}_config", "Config for ${BRANCH_NAME}", "Branch config ${BRANCH_NAME}", "$default_config_content")
    provider.save(config)
}

但是需要在作业的(多管道)配置文件夹中创建

1 个答案:

答案 0 :(得分:0)

我能够在JENKINS-56305

的帮助下实现这一点
def folder = Jenkins.instance.getItemByFullName('jobName');
def action = folder.getAction(org.jenkinsci.plugins.configfiles.folder.FolderConfigFileAction.class);
def store = action.getStore();
def config = new org.jenkinsci.plugins.configfiles.json.JsonConfig("XXXX_config", "Config for XXXX", "Branch config XXXX", "{A:B}");
// save the new config
store.save(config);
// get the new config
def jsonConfig = store.getById("XXXX_config");
// remove the config
store.remove("XXXX_config");