Update Jenkins from a war file

UbuntuJenkinsWar

Ubuntu Problem Overview


I have a machine with Ubuntu 12.04 and have installed Jenkins ver. 1.424.6 using apt-get based on *this guide*, but there is a new version:

New version of Jenkins (1.447.2) is available for download (changelog).

If I press download, I get a jenkins.war file... but how do I use that for upgrading my current installation? or is that not possible before the apt repositories gets updated?

Ubuntu Solutions


Solution 1 - Ubuntu

You can overwrite the existing jenkins.war file with the new one and then restart Jenkins.

This file is usually located in /usr/share/jenkins.

If this is not the case for your system, in Manage Jenkins -> System Information, it will display the path to the .war file under executable-war.

Solution 2 - Ubuntu

#on ubuntu, in /usr/share/jenkins:

sudo service jenkins stop
sudo mv jenkins.war jenkins.war.old
sudo wget https://updates.jenkins-ci.org/latest/jenkins.war
sudo service jenkins start

Solution 3 - Ubuntu

If you have installed Jenkins via apt-get, you should also update Jenkins via apt-get to avoid future problems. Updating should work via "apt-get update" and then "apt-get upgrade".

For details visit the following URL:

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

Solution 4 - Ubuntu

apt-get update
apt-get upgrade
by far the easiest way to upgrade on linux, works like a charm everytime.

Solution 5 - Ubuntu

when you open the Jenkins panel it will show available package from their latest version. you can download it via wget command in the server.after download the latest package you should take .war backup file.

Eg-: wget http://updates.jenkins-ci.org/download/war/2.205/jenkins.war

Jenkins war file path for Ubuntu - /usr/share/jenkins/

Jenkins war file path for centos - /usr/lib/jenkins/

after taking backup overwrite the war file and restart the jenkins service.

Ubuntu - service jenkins restart , centos - systemctl restart jenkins.service

Solution 6 - Ubuntu

Though I wouldn't consider this as a valid answer to OP's question, I'd still emphasize that the best way to deploy Jenkins (and likely most if not all libraries/packages/software) on Ubuntu is to leverage aptitude (or apt-get) management system.

It is documented here: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (notice that if you want to use the LTS build, hit on this repo http://pkg.jenkins-ci.org/debian-stable/)

So if by any chance you actually did use this approach, you'd simply do a apt-get upgrade jenkins

Solution 7 - Ubuntu

We run jenkins from the .war file with the following command.

java -Xmx2500M -jar jenkins.war --httpPort=3333 --prefix=/jenkins

You can even run the command from the ~/Downloads directory

Solution 8 - Ubuntu

I use this groovy script to download new war file

import java.util.concurrent.atomic.AtomicInteger

class ThreadHelper{
	static done = false;
	static starttime = System.currentTimeMillis()
	static synchronized printx (message) {    printf ("%5s seconds: %20s",(System.currentTimeMillis()-starttime)/1000.0 , message); println("") }
	def download(address)
	{
	def filename = new File(System.getenv()['CI_HOME'] + '/' + address.tokenize("/")[-1])
	println(filename.getCanonicalPath())
	def file = new FileOutputStream(filename)
	def out = new BufferedOutputStream(file)
	out << new URL(address).openStream()
	out.close()
	done=true;
	}

}

println("executing from ... "+ new File(".").getCanonicalPath())

def counter = new AtomicInteger();
	th = Thread.start {
	while(!ThreadHelper.done) {
	sleep 1000
	counter.incrementAndGet()
	print '.'
	}
}

th2 = Thread.start { new ThreadHelper().download("http://mirrors.jenkins-ci.org/war/latest/jenkins.war") }
th.join()
th2.join()

ThreadHelper.printx('done')

And another script shutsdown tomcat - copies the war and restarts it

We host it on windows 2008 and tomcat, I use sc query, sc config, sc stop, sc start to manage windows services

    set warname=jenkins

if '%name%' == 'trak' set warname=trak

pushd .
if '%name%'=='' goto badname
if '%warname%'=='' goto badname

if '%ci_home%'=='' goto badcihome

REM =====================================================
REM stop windows service
sc stop %name%

REM sleep for 5 seconds see http:\\stackoverflow.com\questions\1672338\how-to-sleep-for-5-seconds-in-windowss-command-prompt-or-dos
ping 1.1.1.1 -n 1 -w 3000 > nul

rem replace forward slash with backward slash
set tomcat_dir=%ci_home:/=\%\instances\tomcat7-%name%

REM Create sub directory called bak-yymmdd-hhmmss
REM where yymmdd-hhmmss is a date-time stamp like 120601-142907

set hh=%time:~0,2%

REM Since there is no leading zero for times before 10 am, have to put in
REM a zero when this is run before 10 am.

if "%time:~0,1%"==" " set hh=0%hh:~1,1%

set yymmdd_hhmmss=%date:~12,2%%date:~4,2%%date:~7,2%-%hh%%time:~3,2%%time:~6,2%

set backupdir=bak-%yymmdd_hhmmss%

REM =====================================================
md %tomcat_dir%\logs\%backupdir%

cd %tomcat_dir%\logs

dir bak*
echo "nothing-to-log" >> force.log

REM move command will fail if there is nothing to move hence the force log statement above

call move *.* %backupdir%

REM =====================================================
rmdir %tomcat_dir%\webapps\%name% /q/s

echo f|xcopy %ci_home%\%warname%.war %tomcat_dir%\webapps\%name%.war /y

REM TODO===== something about jenkins plugins

REM =====================================================
cd "%tomcat_dir%\bin"
call catalina version

echo =====================================================
echo ====== removing %name%
call service remove %name%

echo =====================================================
echo ====== installing %name%
call service install %name%

echo on

REM setting service to start automatically, note that space before the word auto IS REQUIRED
sc config %name% start= auto

REM =====================================================
sc start %name%

popd

exit 0

goto done

:badname
echo 'name required - this will be used as windows service name as well'
pause
exit 1

:badcihome
echo 'CI home env var required - ci_home'
pause
exit 1

:done

Solution 9 - Ubuntu

https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Ubuntu

Once installed like this, you can update to the later version of Jenkins (when it comes out) by running the following commands:
-------
sudo apt-get update
sudo apt-get install jenkins
-------
(aptitude or apt-get doesn't make any difference.)
What does this package do?
Jenkins will be launched as a daemon up on start. See /etc/init.d/jenkins for more details.
The 'jenkins' user is created to run this service.
Log file will be placed in /var/log/jenkins/jenkins.log. Check this file if you are troubleshooting Jenkins.
/etc/default/jenkins will capture configuration parameters for the launch like e.g JENKINS_HOME
By default, Jenkins listen on port 8080. Access this port with your browser to start configuration.

Solution 10 - Ubuntu

This could be done in two ways

  1. Directly download the .war file and replace it with the existing one.
  2. update directly from ubuntu

1st Method

If you are not able to find jenkins war file in standard path, you can goto Manage Jenkins → System Information, it will display the path to the .war file.

The common location of Jenkins war file on the ubuntu server is:

/usr/share/jenkins

Jump to jenkins home directory

cd /usr/share/jenkins

Stop the jenkins server

sudo service jenkins stop

Move existing jenkins war file

sudo mv jenkins.war jenkins.war.old

Download latest jenkins war file

sudo wget https://updates.jenkins-ci.org/latest/jenkins.war

Start the Jenkins server

sudo service jenkins start

Everything should be good now.

Troubleshooting steps

If you are running jenkins using root permissions, (which you should not be doing), you need to change the jenkins.war permissions.

$ sudo chown root:root jenkins.war

You can optionally restart the jenkins server using below command:

$ sudo /etc/init.d/jenkins restart

2nd Method

On ubuntu, you can also try the below two commands to update everything:

$ sudo apt-get update
$ sudo apt-get install jenkins --fix-missing

Solution 11 - Ubuntu

Mine is installed under /usr/share/jenkins I thought it was installed via apt-get so might want to check there as well.

Ubuntu 12.04.1

Solution 12 - Ubuntu

I didn't want to install the x11-common and other components that come bundled in the apt-get install approach, so I just downloaded the .war file and ran the command Francois mentioned. That worked nicely, but you have to write your own daemon script with that approach. Full details here: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci

Solution 13 - Ubuntu

To Upgrade Jenkins WAR file, follow the steps below:

  • Stop Jenkins server using command: systemctl stop jenkins
  • Go to Jenkins war location: ex: /usr/lib/jenkins
  • Take a backup from jenkins.war: mv jenkins.war jenkins.war_bkp
  • Download Jenkins using wget or curl command: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Starting Jenkins server using command: systemctl start jenkins
  • Check Jenkins server status using command: systemctl status jenkin

Solution 14 - Ubuntu

By far easiest way to upgrade jenkins inside ubuntu as Vasan said.

apt-get update apt-get upgrade

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionu123View Question on Stackoverflow
Solution 1 - UbuntubcmcfcView Answer on Stackoverflow
Solution 2 - Ubuntu3z33etmView Answer on Stackoverflow
Solution 3 - UbuntudunniView Answer on Stackoverflow
Solution 4 - UbuntuVasan RamaniView Answer on Stackoverflow
Solution 5 - UbuntuSudesh Lakmal PathiranaView Answer on Stackoverflow
Solution 6 - UbuntuwoozykingView Answer on Stackoverflow
Solution 7 - UbuntuFrancois LacoursiereView Answer on Stackoverflow
Solution 8 - UbuntuKalpesh SoniView Answer on Stackoverflow
Solution 9 - UbuntuRan AdlerView Answer on Stackoverflow
Solution 10 - UbuntuYash Tomar -AeologicView Answer on Stackoverflow
Solution 11 - UbuntudanView Answer on Stackoverflow
Solution 12 - UbuntuJohnView Answer on Stackoverflow
Solution 13 - UbuntuOmar KhaledView Answer on Stackoverflow
Solution 14 - UbuntuCarlos BehrView Answer on Stackoverflow