diff --git a/pkg/setting/setting_plugins.go b/pkg/setting/setting_plugins.go index 005950e9611..3739e253cfc 100644 --- a/pkg/setting/setting_plugins.go +++ b/pkg/setting/setting_plugins.go @@ -145,13 +145,15 @@ func (cfg *Cfg) readPluginSettings(iniFile *ini.File) error { delete(preinstallPluginsAsync, disabledPlugin) delete(preinstallPluginsSync, disabledPlugin) } + for _, plugin := range preinstallPluginsSync { + cfg.PreinstallPluginsSync = append(cfg.PreinstallPluginsSync, plugin) + // preinstallSync plugin has priority over preinstallAsync + delete(preinstallPluginsAsync, plugin.ID) + } for _, plugin := range preinstallPluginsAsync { cfg.PreinstallPluginsAsync = append(cfg.PreinstallPluginsAsync, plugin) } - for _, plugin := range preinstallPluginsSync { - cfg.PreinstallPluginsSync = append(cfg.PreinstallPluginsSync, plugin) - } installPluginsInAsync := pluginsSection.Key("preinstall_async").MustBool(true) if !installPluginsInAsync { for key, plugin := range preinstallPluginsAsync { diff --git a/pkg/setting/setting_plugins_test.go b/pkg/setting/setting_plugins_test.go index 74425c95a0e..4a5437548ed 100644 --- a/pkg/setting/setting_plugins_test.go +++ b/pkg/setting/setting_plugins_test.go @@ -237,6 +237,13 @@ func Test_readPluginSettings(t *testing.T) { return plugins }(), }, + { + name: "when same plugin is defined in preinstall and preinstall_sync, should be only in preinstallSync", + rawInput: "plugin1", + rawInputSync: "plugin1", + expected: defaultPreinstallPluginsList, + expectedSync: []InstallPlugin{{ID: "plugin1"}}, + }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) {