Aggiorna Jenkins da un file di guerra


91

Ho una macchina con Ubuntu 12.04 e ho installato Jenkins ver. 1.424.6 usando apt-get basato su questa guida , ma c'è una nuova versione:

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

Se premo download, ottengo un file jenkins.war ... ma come posso utilizzarlo per aggiornare la mia installazione corrente? o non è possibile prima che i repository apt vengano aggiornati?

Risposte:


161

È possibile sovrascrivere il jenkins.warfile esistente con quello nuovo e quindi riavviare Jenkins.

Questo file si trova solitamente in /usr/share/jenkins.

Se questo non è il caso del tuo sistema, in Manage Jenkins -> System Information, mostrerà il percorso del .warfile sotto executable-war.


16
Sulla mia macchina si trova in / usr / share / jenkins /. Dopo aver copiato e riavviato con "service jenkins restart", mostra ancora la vecchia versione e suggerisce un aggiornamento - cosa sto facendo di sbagliato?
u123

2
E la coerenza dei file di configurazione dopo l'aggiornamento? Hai bisogno di impostare di nuovo il tutto? Supportano la compatibilità con le versioni precedenti?
Denys S.

@DEnysS. manterrà tutte le tue configurazioni. Ho rimosso il file war esistente e spostato quello nuovo da Download a / usr / share / jenkins e ha funzionato perfettamente. (Aptitude non ha mostrato un aggiornamento per jenkins)
Whitney Imura

+1 Questo mi ha aiutato molto, perché la versione corrente su Ubuntu è 1.6 mentre la versione di guerra è 2.4. È un'enorme differenza nell'aspetto grafico e nella disponibilità dei plug-in. Quindi questo mi ha aiutato molto. Temevo di dover installare Tomcat e farlo nel modo più duro.
Caperneoignis

1
passo dopo passo di @bcmcfc 's risposta qui: stackoverflow.com/a/46733405/1404135
3z33etm

32

Se hai installato Jenkins tramite apt-get, dovresti anche aggiornare Jenkins tramite apt-get per evitare problemi futuri. L'aggiornamento dovrebbe funzionare tramite "apt-get update" e poi "apt-get upgrade".

Per i dettagli, visitare il seguente URL:

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


13
+1 b / c non sai mai cosa ha cambiato Ubuntu sulla configurazione di Jenkins. In aggiunta a questo: pkg.jenkins-ci.org/debian fornisce pacchetti aggiornati installabili tramite apt-get direttamente dal progetto.
mabi

Non è necessario aggiornare jenkins dal file war se lo fai sopra. Penso che questo sia il modo migliore su Ubuntu.
Ripon Al Wasim

10
Se in precedenza è stato installato Jenkins con apt-get, ma attraverso la repository di pacchetti di Ubuntu di default (cioè senza pkg.jenkins-ci.org/debian), è necessario rimuovere i pacchetti di Ubuntu di default prima di installare quella nuova sudo apt-get remove jenkins jenkins-common, allora sudo apt-get install jenkins. Se non lo fai, l'aggiornamento fallirà in untrying 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
Grande! Anche l'ultimo collegamento stabile è utile: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ

Best practice, facile da fare. Grazie per questa risposta
Jinna Balu

Phew! Mi hai aiutato a non avere un attacco di cuore nel cuore della notte con il nostro Jenkins che ci costringeva ad aggiornare e non eseguire nessuno dei suoi plug-in
Emjey

12
apt-get update
apt-get upgrade 

di gran lunga il modo più semplice per aggiornare su Linux, funziona a meraviglia ogni volta.


Simile su CentOS a proposito, yum update jenkinsdovrebbe farlo.
Nagev

4

Sebbene non la considererei una risposta valida alla domanda di OP, sottolineerei comunque che il modo migliore per distribuire Jenkins (e probabilmente la maggior parte se non tutte le librerie / pacchetti / software) su Ubuntu è sfruttare aptitude (o apt- get) sistema di gestione.

È documentato qui: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (nota che se vuoi usare la build LTS, premi su questo repository http: // pkg. jenkins-ci.org/debian-stable/ )

Quindi, se per caso hai effettivamente utilizzato questo approccio, faresti semplicemente un file apt-get upgrade jenkins


In teoria hai ragione ma non funziona quando si aggiorna dall'installazione di serie. Dopo l'installazione dell'ultimo pacchetto, si avvia ma restituisce un errore 503. Ho seguito la procedura scritta lì e ho dovuto applicare la soluzione di Matthieu Rouget per ottenere uno stato pkg coerente.
Glenn Plas

3

quando apri il pannello Jenkins, mostrerà il pacchetto disponibile dalla loro ultima versione. puoi scaricarlo tramite il comando wget nel server. dopo aver scaricato l'ultimo pacchetto dovresti prendere il file di backup .war.

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

Percorso del file di guerra Jenkins per Ubuntu - / usr / share / jenkins /

Percorso del file di guerra di Jenkins per centos - / usr / lib / jenkins /

dopo aver eseguito il backup, sovrascrivi il file war e riavvia il servizio jenkins.

Ubuntu - riavvio del servizio jenkins, centos - systemctl riavvio jenkins.service


2

Eseguiamo jenkins dal file .war con il seguente comando.

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

Puoi anche eseguire il comando dalla directory ~ / Download


2

Uso questo fantastico script per scaricare un nuovo file war

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

E un altro script arresta Tomcat: copia la guerra e la riavvia

Lo ospitiamo su Windows 2008 e Tomcat, io uso sc query, sc config, sc stop, sc start per gestire i servizi di Windows

    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

Il mio è installato in / usr / share / jenkins. Pensavo fosse installato tramite apt-get, quindi potrei voler controllare anche lì.

Ubuntu 12.04.1


1

Non volevo installare x11-common e altri componenti forniti in bundle con l'approccio apt-get install, quindi ho semplicemente scaricato il file .war ed eseguito il comando menzionato da Francois. Ha funzionato bene, ma devi scrivere il tuo script daemon con questo approccio. Dettagli completi qui: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Per aggiornare il file WAR di Jenkins, segui i passaggi seguenti:

  • Arresta il server Jenkins utilizzando il comando: systemctl stop jenkins
  • Vai al luogo della guerra di Jenkins: es: /usr/lib/jenkins
  • Fai un backup da jenkins.war: mv jenkins.war jenkins.war_bkp
  • Scarica Jenkins usando il comando wget o curl: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Avvio del server Jenkins utilizzando il comando: systemctl start jenkins
  • Controlla lo stato del server Jenkins utilizzando il comando: systemctl status jenkin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.