ello Folks! As my jenkins server is running in a subnet without internet access i was wondering if it's possible to configure jenkins to check for plugin updates on variable URL different from jenkins plugin centre one. As prop'ed on https://github.com/ikedam/backend-update-center2/wiki/How-to-create-your-own-Jenkins-Update-Center I've tried to create my own json file, but now I'm stuck. I've did exactly the proposed steps and set up proper toolchain. As it is compiled as an maven prj., compiling was no problem. But maven actually fails creating the json Files. Here is toolchain I've used: Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Maven home: /usr/local/apache-maven
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: /opt/Oracle_Java/jdk1.7.0_79/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-38-generic", arch: "amd64", family: "unix"
As maven is supposed to, it gets the plugins needed automatically - I didn't modified pom-File anyway. But trying to run generated jars, build process fails with null-ptr. execption:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.186s
[INFO] Finished at: Thu Jul 09 14:36:08 CEST 2015
[INFO] Final Memory: 12M/301M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:java (default-cli) on project update-center2: An exception occured while executing the Java class. null: InvocationTargetException: NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:java (default-cli) on project update-center2: An exception occured while executing the Java class. null
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. null
at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:346)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:291)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at java.lang.String$CaseInsensitiveComparator.compare(String.java:1176)
at java.lang.String$CaseInsensitiveComparator.compare(String.java:1170)
at java.util.TreeMap.getEntryUsingComparator(TreeMap.java:369)
at java.util.TreeMap.getEntry(TreeMap.java:340)
at java.util.TreeMap.get(TreeMap.java:273)
at org.jvnet.hudson.update_center.LocalDirectoryRepository.listHudsonPlugins(LocalDirectoryRepository.java:132)
at org.jvnet.hudson.update_center.Main.buildPlugins(Main.java:274)
at org.jvnet.hudson.update_center.Main.buildUpdateCenterJson(Main.java:203)
at org.jvnet.hudson.update_center.Main.run(Main.java:167)
at org.jvnet.hudson.update_center.Main.run(Main.java:144)
at org.jvnet.hudson.update_center.Main.main(Main.java:131)
What is going wrong? Check cmd-line:
mvn exec:java -Dexec.args="-id com.XXX.UC.jenkins -h /dev/null -o update-center.json -r release-history.json -repository http://192.168.10.XXX/apt-mirror/jenkins-plugins/ -hpiDirectory /var/lib/jenkins/plugins -nowiki -key jenkins-update-center.key -certificate jenkins-update-center.crt -pretty" -X Key and Certificate has been created as well. Exported variables look like follows:
export LANGUAGES="en"
export LC_MESSAGES="en_GB.UTF-8"
export LC_CTYPE="en_GB.UTF-8"
export LC_COLLATE="en_GB.UTF-8"
export LANG="en_GB.UTF-8"
export JAVA_HOME="/opt/Oracle_Java/jdk1.7.0_79/jre"
export PATH=$PATH:$JAVA_HOME/bin
export M2_HOME=/usr/local/apache-maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
Afterwards I'm going to define additional update centers on the Advanced tab of the plugin manager. Anything I've missed? Thanks for support in advance! Joe
!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED
!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!SOLVED
FINAL SOLUTION:
As hpi-folder means actually only route to folder containing hpi files, I've failed because I gave path to JENK_HOME/plugins folder.
But simply path to folder containing plugins, which you expect to be listed in UC is expected instead.
1. Create your folder containing the HPI files(installed/not installed doesn't mattter)
2. Step through given manual with -hpiDirectory pointing to those
Then your json finally provides list of all the parsed headers of plugins provided in step 1, which actually should match your content on plug-in server.
Prost!!