Config-file-provider-plugin:在 jenkinsfile 的多管道配置文件夹中创建新配置

Config-file-provider-plugin: Create new config in multipipeline config folder in jenkinsfile

我正在使用多分支管道并希望有特定于分支的配置。我目前有一个默认配置,我想将其克隆到 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)
}

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

我是在 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");