[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Oleg Nenashev commented on JENKINS-41196 Re: Pluggable core component I believe this story is largely replaced by Custom WAR Packager anyway (https://github.com/jenkinsci/custom-war-packager). This tool allows quickly building Custom WARs so that users can pick up Remoting/Stapler updates for their own baselines if they do not want to upgrade due to various reasons. Not a 100% solution, but it definitely helps in this use-case Add Comment This message was sent by Atlassian Jira (v7.11.2#711002-sha1:fdc329d) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Baptiste Mathus closed an issue as Incomplete Closing as per Jesse Glick recommendation in https://github.com/jenkinsci/jenkins/pull/2754#issuecomment-453667192. We'll reopen when/if this works gets rebooted. Most of the related PRs now also need anyway to get conflict resolution and didn't receive changes since 1+ year. Jenkins / JENKINS-41196 Pluggable core component Change By: Baptiste Mathus Status: In Progress Closed Resolution: Incomplete Add Comment This message was sent by Atlassian Jira (v7.11.2#711002-sha1:fdc329d) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title SCM/JIRA link daemon commented on JENKINS-41196 Re: Pluggable core component Code changed in jenkins User: Kohsuke Kawaguchi Path: src/main/java/org/jvnet/hudson/test/AltWebXmlConfiguration.java src/main/java/org/jvnet/hudson/test/HudsonTestCase.java src/main/java/org/jvnet/hudson/test/JenkinsRule.java src/main/java/org/jvnet/hudson/test/NoListenerConfiguration.java http://jenkins-ci.org/commit/jenkins-test-harness/75b0b1ec2c27a15854335334ef1dd83f173a5c79 Log: JENKINS-41196 added alternate bootstrap logic With more servlets and filters initialized from within WebAppMain, test harness needs to adjust as well. Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Kohsuke Kawaguchi updated an issue Jenkins / JENKINS-41196 Pluggable core component Change By: Kohsuke Kawaguchi h1. ProblemsThere are quite a few libraries that core bundles. Some of them, such as remoting, stapler, and so on, are heavily used by plugins and systems we build on top of Jenkins core, such as Blue Ocean.This situation creates a class of pain for those plugins; when they need a newer feature or a bug fix in those libraries, they have to wait for multiple months before the change propagates to a version of LTS.h1. SolutionIf we can modify Jenkins core such that it allows any of its libraries to be shipped as plugins, then this would eliminate this class of pain altogether. h1. Requirements* In plugin manifest, BO can specify the minimum core version that bundles one version of stapler, then the version of stapler it requires separately, and the latter is newer than the former* Jenkins admin can install a new remoting plugin in order to deploy a security fix without upgrading the whole Jenkins.* From users’ & administrators’ perspective, “stapler plugin” and “remoting” plugin looks no different from “git plugin” and “promoted builds plugin.”* In a running Jenkins JVM, there’s only one version of stapler or remoting active at any given moment.* Spend a reasonable engineering effort to make Jenkins robust in the face of administrators installing wrong set of plugins, old plugins, and other such situations that arise from our weak plugin manager, incompetent users, and so on.h1. Engineering DesignToday, jenkins.war puts core and all its dependencies in WEB-INF/lib and let servlet container classloader load them all. This results in a fully populated classloader by the time Jenkins core boots up, and it makes it impossible for Jenkins to programmatically control versions of libraries to use.We can change this if Jenkins creates its own classloader during bootstraps, and uses its own logic to decide what jar files to put in there; mix and match from jenkins.war and $JENKINS_HOME.More specifically, we move everything from WEB-INF/lib to WEB-INF/jars, so that core and its dependencies are not loaded by servlet container automatically. Then place small bootstrap code in WEB-INF/lib instead, which creates a classloader that loads core, then passes on execution to hudson.WebAppMain.In order to allow newer versions of components to be delivered as plugins, this bootstrap process will also pick up some files from $JENKINS_HOME/plugins. The likes of remoting/stapler plugins need to have a flag in them, so that the bootstrap process can put them in the main classloader, while others like git & promoted builds are treated the same as today.Bootstrap code needs to be small and with as little dependencies as possible, so core component plugins need to be different enough from regular plugins. At the same time, they need to look similar enough so that our update center and plugin manager can treat them equally. A boolean entry in MANIFEST.MF would be one example that meets
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Kohsuke Kawaguchi updated an issue Jenkins / JENKINS-41196 Pluggable core component Change By: Kohsuke Kawaguchi h1. ProblemsThere are quite a few libraries that core bundles. Some of them, such as remoting, stapler, and so on, are heavily used by plugins and systems we build on top of Jenkins core, such as Blue Ocean.This situation creates a class of pain for those plugins; when they need a newer feature or a bug fix in those libraries, they have to wait for multiple months before the change propagates to a version of LTS.h1. SolutionIf we can modify Jenkins core such that it allows any of its libraries to be shipped as plugins, then this would eliminate this class of pain altogether. h1. Requirements* In plugin manifest, BO can specify the minimum core version that bundles one version of stapler, then the version of stapler it requires separately, and the latter is newer than the former* Jenkins admin can install a new remoting plugin in order to deploy a security fix without upgrading the whole Jenkins.* From users’ & administrators’ perspective, “stapler plugin” and “remoting” plugin looks no different from “git plugin” and “promoted builds plugin.”* In a running Jenkins JVM, there’s only one version of stapler or remoting active at any given moment.* Spend a reasonable engineering effort to make Jenkins robust in the face of administrators installing wrong set of plugins, old plugins, and other such situations that arise from our weak plugin manager, incompetent users, and so on.h1. Engineering DesignToday, jenkins.war puts core and all its dependencies in WEB-INF/lib and let servlet container classloader load them all. This results in a fully populated classloader by the time Jenkins core boots up, and it makes it impossible for Jenkins to programmatically control versions of libraries to use.We can change this if Jenkins creates its own classloader during bootstraps, and uses its own logic to decide what jar files to put in there; mix and match from jenkins.war and $JENKINS_HOME.More specifically, we move everything from WEB-INF/lib to WEB-INF/jars, so that core and its dependencies are not loaded by servlet container automatically. Then place small bootstrap code in WEB-INF/lib instead, which creates a classloader that loads core, then passes on execution to hudson.WebAppMain.In order to allow newer versions of components to be delivered as plugins, this bootstrap process will also pick up some files from $JENKINS_HOME/plugins. The likes of remoting/stapler plugins need to have a flag in them, so that the bootstrap process can put them in the main classloader, while others like git & promoted builds are treated the same as today.Bootstrap code needs to be small and with as little dependencies as possible, so core component plugins need to be different enough from regular plugins. At the same time, they need to look similar enough so that our update center and plugin manager can treat them equally. A boolean entry in MANIFEST.MF would be one example that meets
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Daniel Beck updated an issue Jenkins / JENKINS-41196 Pluggable core component Change By: Daniel Beck Labels: kohsuke-plane-project Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Jesse Glick assigned an issue to Kohsuke Kawaguchi Jenkins / JENKINS-41196 Pluggable core component Change By: Jesse Glick Assignee: Kohsuke Kawaguchi Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Jesse Glick started work on JENKINS-41196 Change By: Jesse Glick Status: Open In Progress Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Kohsuke Kawaguchi commented on JENKINS-41196 Re: Pluggable core component My latest airplane project arrives Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title SCM/JIRA link daemon commented on JENKINS-41196 Re: Pluggable core component Code changed in jenkins User: Kohsuke Kawaguchi Path: bootstrap/src/main/java/jenkins/bootstrap/BootLogic.java bootstrap/src/main/java/jenkins/bootstrap/Bootstrap.java bootstrap/src/main/java/jenkins/bootstrap/DependenciesTxt.java bootstrap/src/main/java/jenkins/bootstrap/Dependency.java bootstrap/src/main/java/jenkins/bootstrap/Plugin.java core/pom.xml core/src/main/java/hudson/ClassicPluginStrategy.java core/src/main/java/hudson/WebAppMain.java core/src/main/java/hudson/util/BootFailure.java core/src/main/java/jenkins/util/SystemProperties.java pom.xml war/pom.xml war/src/main/webapp/WEB-INF/web.xml http://jenkins-ci.org/commit/jenkins/d13004c5d5ac22a44db18433e1dc8e286185aa81 Log: JENKINS-41196 Implemented the bootstrap logic and necessary packaging change to load the core from a separate classloader. Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Kohsuke Kawaguchi created an issue Jenkins / JENKINS-41196 Pluggable core component Issue Type: Improvement Assignee: Unassigned Components: core Created: 2017/Jan/19 1:55 AM Priority: Major Reporter: Kohsuke Kawaguchi Problems There are quite a few libraries that core bundles. Some of them, such as remoting, stapler, and so on, are heavily used by plugins and systems we build on top of Jenkins core, such as Blue Ocean. This situation creates a class of pain for those plugins; when they need a newer feature or a bug fix in those libraries, they have to wait for multiple months before the change propagates to a version of LTS. Solution If we can modify Jenkins core such that it allows any of its libraries to be shipped as plugins, then this would eliminate this class of pain altogether. Add Comment
[JIRA] (JENKINS-41196) Pluggable core component
Title: Message Title Kohsuke Kawaguchi commented on JENKINS-41196 Re: Pluggable core component For my internal tracking purpose, the original document is here Add Comment This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c) -- You received this message because you are subscribed to the Google Groups "Jenkins Issues" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.