From 824ff91db0d82fe439d67de342d78ef3c7108a4d Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Mon, 20 Jul 2026 04:38:53 +0100 Subject: [PATCH] Remove pre 2.0 detached plugins (#27098) * Remove pre 2.0 detached plugins * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix tests relying on unbundled detached plugins PluginManagerInstalledGUITest copied matrix-auth.hpi out of the war; switch to command-launcher, which is still bundled, has no dependents in the test environment (unlike javax-activation-api, which jaxb and javax-mail-api depend on), and whose only dependency (script-security) is already provided as a test dependency. ClassicPluginStrategyTest's foo4.hpi fixture declared a dependency on junit, which is no longer bundled; regenerate it against javax-activation-api, mirroring how ant was swapped for junit in #5338. Co-Authored-By: Claude Fable 5 * Delete test * Remove local data fixture --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Claude Fable 5 --- .../hudson/PluginManagerInstalledGUITest.java | 20 +- .../install/LoadDetachedPluginsTest.java | 15 -- .../testDisabledDependencyClassLoader.zip | Bin 1702 -> 1917 bytes .../upgradeFromJenkins1/config.xml | 34 --- war/pom.xml | 239 +----------------- 5 files changed, 12 insertions(+), 296 deletions(-) delete mode 100644 test/src/test/resources/jenkins/install/LoadDetachedPluginsTest/upgradeFromJenkins1/config.xml diff --git a/test/src/test/java/hudson/PluginManagerInstalledGUITest.java b/test/src/test/java/hudson/PluginManagerInstalledGUITest.java index 97c826dbc7..62ebf100e9 100644 --- a/test/src/test/java/hudson/PluginManagerInstalledGUITest.java +++ b/test/src/test/java/hudson/PluginManagerInstalledGUITest.java @@ -66,13 +66,13 @@ class PluginManagerInstalledGUITest { session.then(j -> { InstalledPlugins installedPlugins = new InstalledPlugins(j); - InstalledPlugin matrixAuthPlugin = installedPlugins.get("matrix-auth"); + InstalledPlugin commandLauncherPlugin = installedPlugins.get("command-launcher"); InstalledPlugin dependeePlugin = installedPlugins.get("dependee"); InstalledPlugin dependerPlugin = installedPlugins.get("depender"); InstalledPlugin mandatoryDependerPlugin = installedPlugins.get("mandatory-depender"); // As a detached plugin, it is an optional dependency of others built against a newer baseline. - matrixAuthPlugin.assertHasNoDependents(); + commandLauncherPlugin.assertHasNoDependents(); // Has a mandatory dependency: dependeePlugin.assertHasDependents(); // Leaf plugins: @@ -119,13 +119,13 @@ class PluginManagerInstalledGUITest { dependerPlugin.assertEnabled(); // You can disable a detached plugin if there is no explicit dependency on it. - matrixAuthPlugin.assertEnabled(); - matrixAuthPlugin.assertEnabledStateChangeable(); - matrixAuthPlugin.assertUninstallable(); - matrixAuthPlugin.clickEnabledWidget(); - matrixAuthPlugin.assertNotEnabled(); - matrixAuthPlugin.assertEnabledStateChangeable(); - matrixAuthPlugin.assertUninstallable(); + commandLauncherPlugin.assertEnabled(); + commandLauncherPlugin.assertEnabledStateChangeable(); + commandLauncherPlugin.assertUninstallable(); + commandLauncherPlugin.clickEnabledWidget(); + commandLauncherPlugin.assertNotEnabled(); + commandLauncherPlugin.assertEnabledStateChangeable(); + commandLauncherPlugin.assertUninstallable(); }); } @@ -307,7 +307,7 @@ class PluginManagerInstalledGUITest { try { return super.loadBundledPlugins(); } finally { - copyBundledPlugin(PluginManagerInstalledGUITest.class.getResource("/WEB-INF/detached-plugins/matrix-auth.hpi"), "matrix-auth.jpi"); // cannot use installDetachedPlugin at this point + copyBundledPlugin(PluginManagerInstalledGUITest.class.getResource("/WEB-INF/detached-plugins/command-launcher.hpi"), "command-launcher.jpi"); // cannot use installDetachedPlugin at this point copyBundledPlugin(PluginManagerInstalledGUITest.class.getResource("/plugins/dependee-0.0.2.hpi"), "dependee.jpi"); copyBundledPlugin(PluginManagerInstalledGUITest.class.getResource("/plugins/depender-0.0.2.hpi"), "depender.jpi"); copyBundledPlugin(PluginManagerInstalledGUITest.class.getResource("/plugins/mandatory-depender-0.0.2.hpi"), "mandatory-depender.jpi"); diff --git a/test/src/test/java/jenkins/install/LoadDetachedPluginsTest.java b/test/src/test/java/jenkins/install/LoadDetachedPluginsTest.java index c5e0075bfe..ae21666819 100644 --- a/test/src/test/java/jenkins/install/LoadDetachedPluginsTest.java +++ b/test/src/test/java/jenkins/install/LoadDetachedPluginsTest.java @@ -66,21 +66,6 @@ class LoadDetachedPluginsTest { private final LogRecorder logging = new LogRecorder(); - @Issue("JENKINS-48365") - @Test - @LocalData - void upgradeFromJenkins1() throws Throwable { - VersionNumber since = new VersionNumber("1.490"); - rr.then(r -> { - List detachedPlugins = DetachedPluginsUtil.getDetachedPlugins(since); - assertThat("Plugins have been detached since the pre-upgrade version", - detachedPlugins.size(), greaterThan(4)); - assertThat("Plugins detached between the pre-upgrade version and the current version should be installed", - getInstalledDetachedPlugins(r, detachedPlugins).size(), equalTo(detachedPlugins.size())); - assertNoFailedPlugins(r); - }); - } - @Test @Disabled("Only useful while updating bundled plugins, otherwise new security warnings fail unrelated builds") @LocalData diff --git a/test/src/test/resources/hudson/ClassicPluginStrategyTest/testDisabledDependencyClassLoader.zip b/test/src/test/resources/hudson/ClassicPluginStrategyTest/testDisabledDependencyClassLoader.zip index 140b411693b16521bfc96120a783b6c60340c654..ffcf1aae1ba9aeef4eba921640a80987fd75a6b4 100644 GIT binary patch delta 1615 zcmZ{kc{tQt7{`Butfi?$c25dd8QIrnL~a>kZuX^YS;yE0;ig}zt3oQt5=Qn&$_!)4 zQkHZH(aqjy?4xWmwy}&mBloH2y7!#tJ?A}toX`25e?ED8Hu$+v#_Svd0PxV6^Prp< z;Ogh=?&Sds#rRlS@Br*kQC$;O1&8th5ROF%0B``zK_GE(LqK*8Ue*CPQa0Vlltoj#a`(=Q8i(p^KQx| z@eSS24mS)Iu6#zyrY*Rt3;2g2ruS|l-g+xp)kYL*o4_FQA4@gFQwOkfRASoIj|gI_ zxTfx5%;h+IZI?N3MtNUH?+REN+K}`7F+#0Ms767d z^Mnz-!sj8hx#f0VwrP301a8QOLGN$vai*BDRm&trC z@~A9TM!XcinS-xziwCc1=$!GTETtnNAu9Lw?GL(-V&D=)Zi)r1zdMzbYLoal|DJsb zEN^%{E2yRjU;Q9T61)RH%u{Mq=dZ8c5qX@(OT{koMpOCD#~_u>W5UeDN3}1#Zt%|x zuj`7Mik((Gpz+=c3VYQisk}Dz%ii)n7qAeW;aE3NU|W+wu4X)rxK5y15f-e~&Pv|C z!033IG~16M*5vk>m=*-$gj|J4S8|iFw1;u@=EQZI^82mY5+fkHJs#PY-*d4*!n`d6WhWDc z3&`yz_iccAG(o~s7#u3ygD#;jsrQt7z!hn#+M%0^pT_#NHKcXpJ>X$43uX1A!Su7? z$!|LtjrUqG-Jz)xenmz_EzThYnN>9Tk~YSn6M z2t~Wqeq3KW|Dt2(t#B%#b){2`24SU zhEVhd+O&`g_GL08b!|CPrC#28*YL!vprcoH)_GRQ<viq&ve zP67XNeo)x6+`$z3$?PMYT>;pU1|Cve8$8Z1)=ShbcGJO^1RIyr@W{-pKse41+!^lx z8M#vm^RGg~XQrczja%z7hFk0unw)!T%d^}u7Yv%dRWIF|iBX)ok##=bi<~In6hfj=SaZFGSJi|Ai!G**Qgj{s3xa1DVQrbktBFD9|s?qu3W13dO?u2 zjtWid-YdVd{&`*afF=Z=NYg#YH6^qQl-2uH2F5wqq$IC*EKNA&^dV@IN+3o0de*sA z$nVZ~eYA+@c_CegN)l`<)V^kU;$jO@P{L6Ip3(x@vk$ygOHB-JipjY=Fy`PApe-iL zDUN)=7?_qO$`R*Jn4`wO@Tu|(poOChR83SG-tD&_G-3ZcQAG%; z$VciAsb+t+hRmdcjqCu*7{VsOzAaSn(3TRJ+5~bUS?$ky-Su6sJEX|E|9@ir&SMF3 y`V^9h{h?VVZKq-}KjQqSW&gpk;>G@i`{CT3Se9;4#=AIK-(hFY1?G<3I{ghOLd0qS delta 1424 zcmey%w~V(wz?+#xgaHINlT(Ah3@E_?qziIN(=+pm^&zU57&sWdC#42etGB;NVqsv2 z04fncQk9mUZ=#n`kjecaEln_yq4B-vN=F`#2H}p{SZA41+rM|dFc)Y&b`P62J7U_b zcK3~X%N|X3WLB%^ykeuq#@A-{QryqVmwWpX10w?wV`GDeNvUy;b?f3>^ZfEZyxfz< z+-N)B)pXzeilA8^pM)PdwZJuRwbQ;X*JXykWp8X-`0@1b>*gWqI`&g%&x@NEcdWYb zmF}~*^5(B}R!*s{dOP)%;nf`WrKyviONM93&bym$m2cSn>JhVHQT<-A+4=d!wbjo) z8~HD8{vID6yKZf<@ge2PXOr1iS1B#|alLa%d*+`v{(n~7Iac>3=j>86P3PNkch2G~n?kc6s3L$*YxdCr{>PQ zZ|o(cD{F3UH|N3I8*d&*9GS6g;n5%GpFVq=)K^q2Ce`)(v*`Z08UNnIuev9+zkB)f zd-dyH?Ar3@x8}MvSA%5A-d1a8UAtx)a^_ri{fm7+l%lR=%J#j`W^jw-6tJEkTgvMC zlXa!5>dci#_blftk~MmexFcY1e5P~hv2W8mrPH)Irr&+WKeP7hl=j;>8||-dJ-`0` z+be70P8Gz}pS3%9vvPIhuhmjZ_>buQPrq`y{H@vTd-a#H)s}}?p6}ksoxd;W%+8;l z$NwaI*R6>@vC%@~!m@a;h(8~nrIvrMpQt~-;v+xvA#>vf&fh_NmYG>1*`}}iSeb{>c=$emnogTRB9X?T~KX=Mv^R4T??hE}-;I3jkoSr**|OV|Ly+{CtnrcT)%5-*_)ej z)m6W`H6>;J99NnLtKF_JJioQ_;q$YLw*JWoytsDX;d%V`!fO7;R{bizws)^Dk0j5{ zJM-qA%exn8`u<#m_>Ef2ccBGumRY@bo_?m1uVaP#GXv)kDkuZweGLZjUpxw z^LLJW8VbHfi!oU$ADBIrcgYlPj>yKiEvc*@84$%zncG_%A2XK2Y>dDnhlzoK3s~$V z=jWwmrt4MY=4^D~V610kvS-F!l0geKhPRF&7NT5(=)zU9!E|kDR727QE9U~d5xUD9 gvA7VXeM#dsU~!3XZ-6%|8%T~B2-g7VC#)bI0NZM9F#rGn diff --git a/test/src/test/resources/jenkins/install/LoadDetachedPluginsTest/upgradeFromJenkins1/config.xml b/test/src/test/resources/jenkins/install/LoadDetachedPluginsTest/upgradeFromJenkins1/config.xml deleted file mode 100644 index 36efee1260..0000000000 --- a/test/src/test/resources/jenkins/install/LoadDetachedPluginsTest/upgradeFromJenkins1/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - 1.490 - 2 - NORMAL - true - - - false - - ${JENKINS_HOME}/workspace/${ITEM_FULLNAME} - ${ITEM_ROOTDIR}/builds - - - - - 5 - 0 - - - - All - false - false - - - - All - 0 - - - - \ No newline at end of file diff --git a/war/pom.xml b/war/pom.xml index 2e316b65b6..ea9cefb474 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -273,145 +273,12 @@ THE SOFTWARE. Detached plugins and their dependencies - detached plugins that used to be bundled plugins --> - - org.jenkins-ci.plugins - display-url-api - 2.217.va_6b_de84cc74b_ - hpi - - - - org.jenkins-ci.plugins - mailer - 534.v1b_36f5864073 - hpi - - - - org.jenkins-ci.plugins - matrix-auth - 3.3 - hpi - - - - org.jenkins-ci.plugins - antisamy-markup-formatter - 173.v680e3a_b_69ff3 - hpi - - - - org.jenkins-ci.plugins - matrix-project - 870.v9db_fcfc2f45b_ - hpi - - - + org.jenkins-ci.plugins script-security 1402.1405.vc96e74964250 hpi - - - org.jenkins-ci.plugins - junit - 1415.vcb_3245e24402 - hpi - - - - org.jenkins-ci.plugins.workflow - workflow-api - 1413.v2ff1a_5e720fa_ - hpi - - - - io.jenkins.plugins - plugin-util-api - 7.1341.v039f146993d9 - hpi - - - - io.jenkins.plugins - bootstrap5-api - 5.3.8-1048.va_c299057e35c - hpi - - - - io.jenkins.plugins - checks-api - 415.vf022234a_931d - hpi - - - - io.jenkins.plugins - prism-api - 1.30.0-741.v034eb_0b_0a_a_fa_ - hpi - - - - - org.jenkins-ci.plugins.workflow - workflow-support - 1015.v785e5a_b_b_8b_22 - hpi - - - - - org.jenkins-ci.plugins - jackson2-api - 2.22.0-439.vb_b_43658d6176 - hpi - - - - - io.jenkins.plugins - jackson3-api - 3.2.1-92.vd25c2e23c180 - hpi - - - - - io.jenkins.plugins - jackson-annotations2-api - 2.22-19.v10a_a_582ea_26e - hpi - - - - - io.jenkins.plugins - snakeyaml-engine-api - 3.0.1-5.vd98ea_ff3b_92e - hpi - - - - - io.jenkins.plugins - woodstox-core-api - 7.2.1-6.v3718a_a_11f5c4 - hpi - - - - - io.jenkins.plugins - echarts-api - 6.0.0-1287.vfd24c22a_3d00 - hpi - io.jenkins.plugins @@ -420,65 +287,12 @@ THE SOFTWARE. hpi - - io.jenkins.plugins - snakeyaml-api - 2.5-149.v72471e9c6371 - hpi - - - - io.jenkins.plugins - jakarta-xml-bind-api - 4.0.9-19.v2b_a_5b_44d9a_1c - hpi - - - - + io.jenkins.plugins caffeine-api 3.2.4-208.v7e2da_a_7db_82b_ hpi - - - - io.jenkins.plugins - jquery3-api - 3.7.1-687.v68d468e40b_30 - hpi - - - - - io.jenkins.plugins - font-awesome-api - 7.2.0-990.vf220b_2a_496f9 - hpi - - - - - org.jenkins-ci.plugins.workflow - workflow-step-api - 724.v538c2362b_dfb_ - hpi - - - - org.jenkins-ci.plugins - scm-api - 728.vc30dcf7a_0df5 - hpi - - - - org.jenkins-ci.plugins - structs - 362.va_b_695ef4fdf9 - hpi - org.jenkins-ci.plugins @@ -549,27 +363,6 @@ THE SOFTWARE. 4.5.14-269.vfa_2321039a_83 hpi - - - io.jenkins.plugins - asm-api - 9.10.1-216.va_9256d3b_844b_ - hpi - - - - io.jenkins.plugins - commons-lang3-api - 3.20.0-109.ve43756e2d2b_4 - hpi - - - - io.jenkins.plugins - commons-text-api - 1.15.0-218.va_61573470393 - hpi - io.jenkins.plugins @@ -577,34 +370,6 @@ THE SOFTWARE. 2.14.0-201.v8eefe5515533 hpi - - - io.jenkins.plugins - ionicons-api - 94.vcc3065403257 - hpi - - - - io.jenkins.plugins - jakarta-activation-api - 2.1.4-1 - hpi - - - - io.jenkins.plugins - jakarta-mail-api - 2.1.5-1 - hpi - - - - io.jenkins.plugins - json-api - 20250517-173.v596efb_962a_31 - hpi - io.jenkins.plugins.mina-sshd-api