Status: Resolved (View Workflow)
- 8Gb RAM
- 8 CPUs
- 300Gb disk
- Ubuntu 12.04
Jenkins installed via 'apt-get install -y jenkins'
For our environment it is required to load webapp into /var/cache/jenkins.
With previous version (1.509.3) setting /etc/default/jenkins with:
JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT"
has always loaded webroot/webapp to this location.
Installing the latest jenkins with 'apt-get install -y jenkins' using our existing /etc/default/jenkins file not passing the --webroot parameter/location. Starting Jenkins with /etc/init.d/jenkins start
Jenkins:IIRC suggestions to use (command-line or /etc/default/jenkins):
$ export JETTY_HOME=/var/cache/jenkins/war
$ export JENKINS_HOME=/home/username/jenkins
$ /usr/bin/java -Xmx512m -jar /usr/share/jenkins/jenkins-1.540.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1
However, it still continuously loads into: /tmp/jetty-0.0.0.0-8080-jenkins-1.540.war-
INFO: Extract jar:file:/usr/share/jenkins/jenkins-1.540.war!/ to /tmp/jetty-0.0.0.0-8080-jenkins-1.540.war-
Using previous 1.509.3 jenkins.war (and prior) versions does not have this behavior.
Is this change by design?
Can you please provide a workaround so we can specify --webroot or jetty_home, etc.?
- is duplicated by
JENKINS-21061 JENKINS_HOME ignored in JENKINS 1.544
- is related to
JENKINS-21061 JENKINS_HOME ignored in JENKINS 1.544
JENKINS-20858 Images missing from Jenkins UI
JENKINS-18366 Jetty should be used rather than Winstone for embedded deployments
This is a big deal. If the operating system is set up to run tmpwatch with cron (our CentOS box is this way), files will start to get deleted from that /tmp/jetty-... folder and then Jenkins won't work correctly. Usually this is just icons and other images being broken in the UI, but sometimes it could be important jars missing.
Agree Ben, this it's a big problem.
Icons are missing and slaves couldn't start automatically, slave.jar is also missing.
/tmp is really a bad place for the extracted war file
Assigning to Kohsuke (who made the change to Jetty) for comment. I believe that this is an unintended consequence of moving to Jetty.
Note that this is not just a case of the war being exploded into TEMPDIR but I have observed that it continues to serve images etc from the old --webroot location based on the last non-Jetty version of Jenkins (see
The symptoms are quite subtle and at a minimum this bug needs resolving before the next LTS release.
We are experiencing the same issue on Ubuntu 12.04.2: although we have moved from using /tmp, Jenkins still loses the icons, then the styles, overnight. Any idea of a timescale for this fix, please?
This is a serious issue, especially because https://issues.jenkins-ci.org/browse/JENKINS-20858 renders Jenkins essentially unusable until a reboot. I am having this issue on multiple Jenkins installations.
Can we please get a fix for this recently introduced major bug prioritized?
This issue still opened for me and my teamworkers. It's the same behavior since https://issues.jenkins-ci.org/browse/JENKINS-18366.
Could you fix this one as soon as possible. Is it possible to up priority ? "Critical seems to be a good level"
The Jetty documentation shows how the location of the temporary directories can be controlled
I just did a quick experiment by adding a call to WebAppContext#setTempDirectory() in HostConfiguration#create()
When jenkins.war was built with a version of winstone.jar containing that the Jetty temporary directory moved away from /tmp into /var/cache/jenkins/temp
That isn't a full solution to the problem because it needs hooking into the --webroot argument to jenkins.
There are other issues relating to how it works with multiple webapps (they should not share the same temp directory) and the usage of the temp folder is slightly different (it uses a /webapp subdirectory) to the old native winstone behaviour.
I don't know the internal plumbing of Winstone/Jenkins well enough to make a stab at a full fix for this.
I bumped into this issue trying to run jenkins in my NAS where the tmp is just 30MBs. Overriding the java system property (java.io.tmpdir) worked for me!
nohup java -Djava.io.tmpdir=./webroot -jar jenkins.war --httpPort=9999 > ./jenkins.log 2>&1 &
The following worked better for me:
Set the jetty.home to Jenkins directory on the java opts when starting Jenkins
Create a directory called "work" in Jenkins Home directory, or wherever you have set jetty.home
That will cause Jetty to use that work directory instead of whatever the java.io.tmpdir property is set to.
I decided to do some additional tracking of last known working version of jenkins.war where --webroot parameter took effect.
I downloaded previous versions and ran test to see which last known version set webroot to defined: /var/cache/jenkins folder.
Last Version to allow --webroot option was: v 1.534
jenkins-1.534.war - Pass!
jenkins-1.535.war - Fail!
INFO: Extract jar:file:/usr/share/jenkins/jenkins-1.535.war!/ to /tmp/jetty-0.0.0.0-8080-jenkins-1.535.war-
So it appears this change was implemented in v.1.535 - 1.540 (current). I ran several test on 1.537, 1.538, 1.539 and same results.