Aktualisieren Sie Jenkins aus einer Kriegsdatei


91

Ich habe eine Maschine mit Ubuntu 12.04 und habe Jenkins ver installiert. 1.424.6 mit apt-get basierend auf diesem Handbuch , aber es gibt eine neue Version:

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

Wenn ich auf Download drücke, erhalte ich eine jenkins.war-Datei ... aber wie verwende ich diese zum Aktualisieren meiner aktuellen Installation? oder ist das nicht möglich, bevor die apt-Repositorys aktualisiert werden?

Antworten:


160

Sie können die vorhandene jenkins.warDatei mit der neuen überschreiben und dann Jenkins neu starten.

Diese Datei befindet sich normalerweise in /usr/share/jenkins.

Wenn dies für Ihr System nicht der Fall ist, wird in Manage Jenkins -> System Informationder Pfad .warunter angezeigt executable-war.


16
Auf meinem Computer befindet es sich in / usr / share / jenkins /. Nach dem Kopieren und Neustarten mit "service jenkins restart" wird weiterhin die alte Version angezeigt und ein Update vorgeschlagen - was mache ich falsch?
U123

2
Was ist mit der Konsistenz der Konfigurationsdateien nach dem Upgrade? Müssen Sie das Ganze neu einrichten? Unterstützen sie die Abwärtskompatibilität?
Denys S.

@DEnysS. Es behält alle Ihre Konfigurationen. Ich habe die vorhandene Kriegsdatei entfernt und die neue von Downloads nach / usr / share / jenkins verschoben, und es hat perfekt funktioniert. (Aptitude zeigte kein Update für Jenkins)
Whitney Imura

+1 Das hat mir sehr geholfen, da die aktuelle Version unter Ubuntu 1.6 ist, während die Kriegsversion 2.4 ist. Es ist ein großer Unterschied in Aussehen und Verhalten und Verfügbarkeit der Plugins. Das hat mir sehr geholfen. Ich war besorgt, dass ich Tomcat installieren und es auf die harte Tour machen müsste.
Caperneoignis

1
Schritt für Schritt von @bcmcfcs Antwort hier: stackoverflow.com/a/46733405/1404135
3z33etm

32

Wenn Sie Jenkins über apt-get installiert haben, sollten Sie Jenkins auch über apt-get aktualisieren, um zukünftige Probleme zu vermeiden. Das Aktualisieren sollte über "apt-get update" und dann über "apt-get upgrade" funktionieren.

Weitere Informationen finden Sie unter der folgenden URL:

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


13
+1 b / c Sie wissen nie, was Ubuntu an der Jenkins-Konfiguration geändert hat. Hinzu kommt: pkg.jenkins-ci.org/debian bietet aktualisierte Pakete, die über apt-get direkt aus dem Projekt installiert werden können.
Mabi

Sie müssen Jenkins nicht aus der Kriegsdatei aktualisieren, wenn Sie dies oben tun. Ich denke, das ist der bessere Weg unter Ubuntu.
Ripon Al Wasim

10
Wenn Sie zuvor jenkins mit installiert apt-get aber durch die Standard - Ubuntu - Paket - Repository (dh ohne pkg.jenkins-ci.org/debian), müssen Sie die Standard - Ubuntu - Pakete entfernen , bevor die Installation den neuen sudo apt-get remove jenkins jenkins-commondann sudo apt-get install jenkins. Wenn Sie das nicht tun, wird das Update in einemtrying to overwrite '/usr/share/jenkins/jenkins.war', which is also in package jenkins-common 1.424.6+dfsg-1ubuntu0.1
Matthieu Rouget

30
#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

1
Toll! Letzter stabiler Link ist auch nützlich: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæ 10

Best Practice, einfach zu machen. Vielen Dank für diese Antwort
Jinna Balu

Puh! Sie haben mir geholfen, mitten in der Nacht einen Herzinfarkt zu bekommen, als unsere Jenkins uns zwangen, ein Upgrade
durchzuführen

12
apt-get update
apt-get Upgrade 

Bei weitem der einfachste Weg, um unter Linux zu aktualisieren, funktioniert jedes Mal wie ein Zauber.


Ähnlich auf CentOS yum update jenkinssollte es übrigens tun.
Nagev

4

Obwohl ich dies nicht als gültige Antwort auf die Frage von OP betrachten würde, möchte ich dennoch betonen, dass der beste Weg, Jenkins (und wahrscheinlich die meisten, wenn nicht alle Bibliotheken / Pakete / Software) unter Ubuntu bereitzustellen, darin besteht, die Eignung (oder Apt-) zu nutzen. get) Managementsystem.

Es ist hier dokumentiert: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (Beachten Sie, dass Sie, wenn Sie den LTS-Build verwenden möchten, auf dieses Repo http: // pkg klicken. jenkins-ci.org/debian-stable/ )

Wenn Sie diesen Ansatz also tatsächlich tatsächlich angewendet haben, würden Sie einfach eine apt-get upgrade jenkins


Theoretisch haben Sie Recht, aber das funktioniert nicht, wenn Sie ein Upgrade von der Standardinstallation durchführen. Nach der Installation des neuesten Pakets wird es gestartet, es wird jedoch ein 503-Fehler ausgegeben. Ich folgte dem dort beschriebenen Verfahren und musste die Lösung von Matthieu Rouget anwenden, um einen konsistenten Paketzustand zu erhalten.
Glenn Plas

3

Wenn Sie das Jenkins-Bedienfeld öffnen, wird das verfügbare Paket der neuesten Version angezeigt. Sie können es über den Befehl wget auf dem Server herunterladen. Nach dem Herunterladen des neuesten Pakets sollten Sie die .war-Sicherungsdatei verwenden.

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

Jenkins Kriegsdateipfad für Ubuntu - / usr / share / jenkins /

Jenkins Kriegsdateipfad für Centos - / usr / lib / jenkins /

Überschreiben Sie nach dem Backup die War-Datei und starten Sie den Jenkins-Dienst neu.

Ubuntu - Service Jenkins Neustart, Centos - Systemctl Neustart jenkins.service


2

Wir führen Jenkins aus der .war-Datei mit dem folgenden Befehl aus.

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

Sie können den Befehl sogar im Verzeichnis ~ / Downloads ausführen


2

Ich benutze dieses groovige Skript, um eine neue Kriegsdatei herunterzuladen

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')

Und ein anderes Skript fährt Tomcat herunter - kopiert den Krieg und startet ihn neu

Wir hosten es unter Windows 2008 und Tomcat. Ich verwende sc query, sc config, sc stop und sc start, um Windows-Dienste zu verwalten

    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

2
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.

1

Meins ist unter / usr / share / jenkins installiert. Ich dachte, es wurde über apt-get installiert, also möchte ich es vielleicht auch dort überprüfen.

Ubuntu 12.04.1


1

Ich wollte die x11-common und andere Komponenten, die im apt-get-Installationsansatz enthalten sind, nicht installieren, also habe ich einfach die .war-Datei heruntergeladen und den erwähnten Befehl Francois ausgeführt. Das hat gut funktioniert, aber Sie müssen Ihr eigenes Daemon-Skript mit diesem Ansatz schreiben. Ausführliche Informationen finden Sie hier: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Führen Sie die folgenden Schritte aus, um die Jenkins WAR-Datei zu aktualisieren:

  • Stoppen Sie den Jenkins-Server mit dem folgenden Befehl: systemctl stop jenkins
  • Gehe zu Jenkins Kriegsort: Beispiel: /usr/lib/jenkins
  • Erstellen Sie ein Backup von jenkins.war: mv jenkins.war jenkins.war_bkp
  • Laden Sie Jenkins mit dem Befehl wget oder curl herunter: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Starten des Jenkins-Servers mit dem folgenden Befehl: systemctl start jenkins
  • Überprüfen Sie den Jenkins-Serverstatus mit dem folgenden Befehl: systemctl status jenkin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.