Actualizar Jenkins desde un archivo war

92

Tengo una máquina con Ubuntu 12.04 y he instalado Jenkins ver. 1.424.6 usando apt-get basado en esta guía , pero hay una nueva versión:

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

Si presiono descargar, obtengo un archivo jenkins.war ... pero ¿cómo lo uso para actualizar mi instalación actual? ¿O no es posible antes de que se actualicen los repositorios de apt?

u123
fuente

Respuestas:

162

Puede sobrescribir el jenkins.wararchivo existente con el nuevo y luego reiniciar Jenkins.

Este archivo generalmente se encuentra en formato /usr/share/jenkins.

Si este no es el caso de su sistema, en Manage Jenkins -> System Information, mostrará la ruta al .wararchivo debajo executable-war.

bcmcfc
fuente
16
En mi máquina se encuentra en / usr / share / jenkins /. Después de copiar y reiniciar con "service jenkins restart", todavía muestra la versión anterior y sugiere una actualización. ¿Qué estoy haciendo mal?
u123
2
¿Qué pasa con la coherencia de los archivos de configuración después de la actualización? ¿Necesitas configurar todo de nuevo? ¿Admiten la compatibilidad con versiones anteriores?
Denys S.
@DEnysS. mantendrá todas sus configuraciones. Eliminé el archivo war existente y moví el nuevo de Descargas a / usr / share / jenkins y funcionó perfectamente. (Aptitude no mostró una actualización para jenkins)
Whitney Imura
+1 Esto me ayudó mucho, porque la versión actual de Ubuntu es 1.6 mientras que la versión de guerra es 2.4. Es una gran diferencia en apariencia y disponibilidad de complementos. Así que esto me ayudó mucho. Estaba preocupado de tener que instalar Tomcat y hacerlo de la manera más difícil.
Caperneoignis
1
paso a paso de la respuesta de @bcmcfc aquí: stackoverflow.com/a/46733405/1404135
3z33etm
32

Si ha instalado Jenkins a través de apt-get, también debe actualizar Jenkins a través de apt-get para evitar problemas futuros. La actualización debería funcionar a través de "apt-get update" y luego "apt-get upgrade".

Para obtener más información, visite la siguiente URL:

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

Dunni
fuente
13
+1 b / c nunca se sabe qué cambió Ubuntu sobre la configuración de Jenkins. Agregando a esto: pkg.jenkins-ci.org/debian proporciona paquetes actualizados que se pueden instalar a través de apt-get directamente desde el proyecto.
mabi
No es necesario actualizar jenkins desde el archivo war si hace lo mencionado anteriormente. Creo que esta es la mejor forma en Ubuntu.
Ripon Al Wasim
10
Si Jenkins con anterioridad instalado apt-get pero a través del defecto de Ubuntu repositorio de paquetes (es decir, sin pkg.jenkins-ci.org/debian), usted tiene que quitar los paquetes de Ubuntu por defecto antes de instalar uno nuevo sudo apt-get remove jenkins jenkins-commona continuación sudo apt-get install jenkins. Si no lo hace, la actualización fallará en untrying to overwrite '/usr/share/jenkins/jenkins.war', which is also in package jenkins-common 1.424.6+dfsg-1ubuntu0.1
Matthieu Rouget
31
#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
3z33etm
fuente
1
¡Excelente! Último eslabón estable también es útil: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ
Mejores prácticas, fácil de hacer. Gracias por esta respuesta
Jinna Balu
¡Uf! Me ayudaste a evitar un ataque cardíaco en medio de la noche con nuestro Jenkins obligándonos a actualizar y no ejecutar ninguno de sus complementos
Emjey
12
apt-get update
actualización de apt-get 

con mucho, la forma más fácil de actualizar en Linux, funciona como un encanto cada vez.

Vasan Ramani
fuente
Similar en CentOS por cierto, yum update jenkinsdebería hacerlo.
Nagev
4

Aunque no consideraría esto como una respuesta válida a la pregunta de OP, todavía enfatizaría que la mejor manera de implementar Jenkins (y probablemente la mayoría, si no todas las bibliotecas / paquetes / software) en Ubuntu es aprovechar aptitude (o apt- get) sistema de gestión.

Está documentado aquí: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (tenga en cuenta que si desea usar la compilación LTS, haga en este repositorio http: // pkg. jenkins-ci.org/debian-stable/ )

Entonces, si por casualidad realmente usara este enfoque, simplemente haría un apt-get upgrade jenkins

aturdido
fuente
En teoría, tiene razón, pero eso no funciona cuando se actualiza desde la instalación de stock. Después de la instalación del último paquete, se está iniciando pero da un error 503. Seguí el procedimiento escrito allí y tuve que aplicar la solución de Matthieu Rouget para obtener un estado de paquete consistente.
Glenn Plas
3

cuando abra el panel de Jenkins, mostrará el paquete disponible de su última versión. Puede descargarlo a través del comando wget en el servidor. Después de descargar el último paquete, debe tomar el archivo de respaldo .war.

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

Ruta del archivo de guerra de Jenkins para Ubuntu - / usr / share / jenkins /

Ruta del archivo war de Jenkins para centos - / usr / lib / jenkins /

después de realizar la copia de seguridad, sobrescriba el archivo war y reinicie el servicio jenkins.

Ubuntu - reinicio de jenkins de servicio, centos - reinicio de systemctl jenkins.service

Sudesh Lakmal Pathirana
fuente
2

Ejecutamos jenkins desde el archivo .war con el siguiente comando.

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

Incluso puede ejecutar el comando desde el directorio ~ / Descargas

Francois Lacoursiere
fuente
2

Utilizo este maravilloso script para descargar un nuevo archivo de guerra

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

Y otro script apaga Tomcat: copia la guerra y la reinicia

Lo hospedamos en Windows 2008 y Tomcat, yo uso sc query, sc config, sc stop, sc start para administrar los servicios de 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
Kalpesh Soni
fuente
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.
Ran Adler
fuente
1

El mío está instalado en / usr / share / jenkins. Pensé que se instaló a través de apt-get, por lo que es posible que también desee verificar allí.

Ubuntu 12.04.1

dan
fuente
1

No quería instalar x11-common y otros componentes que vienen incluidos en el enfoque de instalación de apt-get, así que descargué el archivo .war y ejecuté el comando que Francois mencionó. Eso funcionó bien, pero tienes que escribir tu propio script demonio con ese enfoque. Detalles completos aquí: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci

Juan
fuente
1

Para actualizar el archivo WAR de Jenkins, siga los pasos a continuación:

  • Detenga el servidor Jenkins usando el comando: systemctl stop jenkins
  • Vaya a la ubicación de guerra de Jenkins: ex: /usr/lib/jenkins
  • Realice una copia de seguridad de jenkins.war: mv jenkins.war jenkins.war_bkp
  • Descarga Jenkins usando el comando wget o curl: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Iniciando el servidor Jenkins usando el comando: systemctl start jenkins
  • Verifique el estado del servidor Jenkins usando el comando: systemctl status jenkin
Omar Khaled
fuente