Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugins installation #175

Merged
merged 23 commits into from May 30, 2018
Merged

Plugins installation #175

merged 23 commits into from May 30, 2018

Conversation

ndeloof
Copy link
Contributor

@ndeloof ndeloof commented Apr 23, 2018

This is implementation for jenkinsci/jep#59

  • declare required plugins in yaml file, as well as update site configuration
  • lock all transitive dependencies in a shrinkwrap file for reproducibility
  • install plugins if required then restart
  • apply plugin configuration before any other configuration
  • test case

a better implementation would require metadata for plugins' versions (not just latest) hosted by update-center

@ndeloof ndeloof changed the title [WiP] Plugins installation Plugins installation Apr 24, 2018
@ndeloof ndeloof changed the title Plugins installation [Blocked] Plugins installation May 7, 2018
ndeloof added 10 commits May 28, 2018 09:03
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
@ndeloof ndeloof changed the title [Blocked] Plugins installation Plugins installation May 28, 2018
and get Dependencies from MANIFEST

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
@ndeloof
Copy link
Contributor Author

ndeloof commented May 28, 2018

@carlossg fyi as you were asking for it

…fault update site

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
@ewelinawilkosz
Copy link
Contributor

ewelinawilkosz commented May 29, 2018

so here is what I did:

  1. I put pretested-integration:2.4.1 in yaml
  2. Reload configuration -> works so well!
  3. I change pretested-integration to 3.0.1 (latest version) in yaml
  4. Reload configuration -> seems like it went ok, no restart happens automatically (that expected behavior?)
  5. Checking the update center and I can see a button to Restart if no jobs are running - so I press it
  6. End up with stacktrace below
java.io.IOException: Pretested Integration Plugin v3.0.1 failed to load.
 - workflow-aggregator v2.5 is missing. To fix, install v2.5 or later.
 - Matrix Project Plugin v1.7.1 is older than required. To fix, install v1.11 or later.
	at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:626)
	at hudson.PluginManager.dynamicLoad(PluginManager.java:864)
Caused: java.io.IOException: Failed to install pretested-integration plugin
	at hudson.PluginManager.dynamicLoad(PluginManager.java:874)
	at hudson.PluginManager.dynamicLoad(PluginManager.java:813)
	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1889)
Caused: java.io.IOException: Failed to dynamically deploy this plugin
	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1893)
	at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1651)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
Caused: org.jenkinsci.plugins.casc.ConfiguratorException: Failed to download plugin pretested-integration:3.0.1
	at org.jenkinsci.plugins.casc.plugins.PluginManagerConfigurator.configure(PluginManagerConfigurator.java:172)
	at org.jenkinsci.plugins.casc.plugins.PluginManagerConfigurator.configure(PluginManagerConfigurator.java:48)
	at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:340)
Caused: org.jenkinsci.plugins.casc.ConfiguratorException: plugins: error configuring <plugins> with <plugins> configurator
	at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:346)
	at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:280)
	at org.jenkinsci.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:253)
	at org.jenkinsci.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:156)
	at org.jenkinsci.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:135)
Caused: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
Caused: java.lang.Error
	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
	at jenkins.model.Jenkins$7.runTask(Jenkins.java:1090)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused: org.jvnet.hudson.reactor.ReactorException
	at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:269)
	at jenkins.InitReactorRunner.run(InitReactorRunner.java:47)
	at jenkins.model.Jenkins.executeReactor(Jenkins.java:1124)
	at jenkins.model.Jenkins.<init>(Jenkins.java:929)
	at hudson.model.Hudson.<init>(Hudson.java:86)
	at hudson.model.Hudson.<init>(Hudson.java:82)
	at hudson.WebAppMain$3.run(WebAppMain.java:235)
Caused: hudson.util.HudsonFailedToLoad
	at hudson.WebAppMain$3.run(WebAppMain.java:252)

shouldn't it install/update required plugins?

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Copy link
Member

@jetersen jetersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

return mapping;
}

}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing newline

/jenkins.yaml
plugins.txt
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing newline

@ConfiguredWithCode("PluginManagerConfiguratorTest.yml")
public void testInstallPlugins() {
final Plugin chucknorris = j.jenkins.getPlugin("chucknorris");
assertNotNull(chucknorris);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😎

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol 👍

…quirements

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
@ewelinawilkosz
Copy link
Contributor

basic tests I performed passed, I'm merging and hope for more feedback from users once I release new version (right after I merge)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants