[FIXED JENKINS-37041] Ensure that detached plugins are always at least their minimum version

This commit is contained in:
Stephen Connolly committed 2016-07-28 16:09:21 +01:00
1 parent 8e536513e8
commit 2a450e5ac2
2 files changed
+38

No files matched your search

@@ -716,6 +716,34 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
new Object[] {lastExecVersion, Jenkins.VERSION, loadedDetached});
InstallUtil.saveLastExecVersion();
} else {
final Set<ClassicPluginStrategy.DetachedPlugin> forceUpgrade = new HashSet<>();
for (ClassicPluginStrategy.DetachedPlugin p : ClassicPluginStrategy.getDetachedPlugins()) {
VersionNumber installedVersion = getPluginVersion(rootDir, p.getShortName());
VersionNumber requireVersion = p.getRequireVersion();
if (installedVersion != null && installedVersion.isOlderThan(requireVersion)) {
LOGGER.log(Level.WARNING,
"Detached plugin {0} found at version {1}, required minimum version is {2}",
new Object[]{p.getShortName(), installedVersion, requireVersion});
forceUpgrade.add(p);
}
}
if (!forceUpgrade.isEmpty()) {
Set<String> loadedDetached = loadPluginsFromWar("/WEB-INF/detached-plugins", new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
name = normalisePluginName(name);
for (ClassicPluginStrategy.DetachedPlugin detachedPlugin : forceUpgrade) {
if (detachedPlugin.getShortName().equals(name)) {
return true;
}
}
return false;
}
});
LOGGER.log(INFO, "Upgraded detached plugins (and dependencies): {0}",
new Object[]{loadedDetached});
}
}
}