Atualize o Jenkins de um arquivo de guerra

91

Eu tenho uma máquina com Ubuntu 12.04 e instalei o Jenkins ver. 1.424.6 usando apt-get baseado neste guia , mas há uma nova versão:

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

Se eu pressionar download, obtenho um arquivo jenkins.war ... mas como faço para usá-lo para atualizar minha instalação atual? ou isso não é possível antes que os repositórios apt sejam atualizados?

u123
fonte

Respostas:

161

Você pode substituir o jenkins.wararquivo existente pelo novo e, em seguida, reiniciar o Jenkins.

Este arquivo geralmente está localizado em /usr/share/jenkins.

Se este não for o caso do seu sistema, em Manage Jenkins -> System Information, será exibido o caminho para o .wararquivo em executable-war.

bcmcfc
fonte
16
Na minha máquina está localizado em / usr / share / jenkins /. Depois de copiar e reiniciar com "service jenkins restart", ele ainda mostra a versão antiga e sugere uma atualização - o que estou fazendo de errado?
u123
2
E quanto à consistência dos arquivos de configuração após a atualização? Você precisa configurar tudo de novo? Eles suportam compatibilidade com versões anteriores?
Denys S.
@DEnysS. ele manterá todas as suas configurações. Removi o arquivo war existente e movi o novo de Downloads para / usr / share / jenkins e funcionou perfeitamente. (Aptitude não mostrou uma atualização para Jenkins)
Whitney Imura
+1 Isso me ajudou muito, porque a versão atual do Ubuntu é 1.6, enquanto a versão de guerra é 2.4. É uma grande diferença na aparência e na disponibilidade de plug-ins. Então, isso me ajudou muito. Estava preocupado se teria que instalar o Tomcat e fazer isso da maneira mais difícil.
Caperneoignis
1
passo a passo da resposta de @bcmcfc aqui: stackoverflow.com/a/46733405/1404135
3z33etm
32

Se você instalou o Jenkins via apt-get, também deve atualizar o Jenkins via apt-get para evitar problemas futuros. A atualização deve funcionar através de "apt-get update" e depois "apt-get upgrade".

Para obter detalhes, visite o seguinte URL:

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

Dunni
fonte
13
+1 b / c você nunca sabe o que o Ubuntu mudou sobre a configuração do Jenkins. Adicionando a isso: pkg.jenkins-ci.org/debian fornece pacotes atualizados instaláveis ​​via apt-get diretamente do projeto.
mabi de
Não há necessidade de atualizar jenkins do arquivo war se você fizer isso mencionado acima. Acho que essa é a melhor maneira no Ubuntu.
Ripon Al Wasim
10
Se tiver instalado anteriormente Jenkins com o apt-get, mas através do padrão do Ubuntu repositório de pacotes (ou seja, sem pkg.jenkins-ci.org/debian), você tem que remover os pacotes do Ubuntu padrão antes de instalar o novo sudo apt-get remove jenkins jenkins-commonentão sudo apt-get install jenkins. Se você não fizer isso, a atualização falhará em umtrying 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
3z33etm
fonte
1
Ótimo! O último link estável também é útil: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ
Melhores práticas, fácil de fazer. Obrigado por esta resposta
Jinna Balu
Ufa! Você me ajudou a não ter um ataque cardíaco no meio da noite com nosso Jenkins nos forçando a atualizar e não executando nenhum de seus plug
Emjey
12
apt-get update
apt-get upgrade 

de longe a maneira mais fácil de atualizar no linux, funciona perfeitamente sempre.

Vasan Ramani
fonte
A propósito, semelhante no CentOS, yum update jenkinsdeve servir.
Nagev
4

Embora eu não considere isso uma resposta válida para a pergunta do OP, eu ainda enfatizaria que a melhor maneira de implantar o Jenkins (e provavelmente a maioria, se não todas as bibliotecas / pacotes / software) no Ubuntu é alavancar o aptitude (ou apt- get) sistema de gerenciamento.

Está documentado aqui: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (observe que se você deseja usar a compilação LTS, clique neste repositório http: // pkg. jenkins-ci.org/debian-stable/ )

Então, se por acaso você realmente usasse essa abordagem, você simplesmente faria um apt-get upgrade jenkins

tonto
fonte
Em teoria, você está certo, mas isso não funciona ao atualizar a partir da instalação padrão. Após a instalação do pacote mais recente, ele está inicializando, mas apresentando um erro 503. Eu segui o procedimento escrito lá e tive que aplicar a solução de Matthieu Rouget para obter um estado de pacote consistente.
Glenn Plas
3

quando você abre o painel do Jenkins, ele mostra o pacote disponível de sua versão mais recente. você pode baixá-lo através do comando wget no servidor. Depois de baixar o pacote mais recente, você deve obter o arquivo de backup .war.

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

Caminho do arquivo war do Jenkins para Ubuntu - / usr / share / jenkins /

Caminho do arquivo war do Jenkins para centos - / usr / lib / jenkins /

depois de fazer o backup, sobrescreva o arquivo war e reinicie o serviço jenkins.

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

Sudesh Lakmal Pathirana
fonte
2

Executamos jenkins a partir do arquivo .war com o seguinte comando.

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

Você pode até mesmo executar o comando do diretório ~ / Downloads

François Lacoursiere
fonte
2

Eu uso este script bacana para baixar um novo arquivo 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')

E outro script desliga o tomcat - copia a guerra e a reinicia

Nós o hospedamos no windows 2008 e tomcat, eu uso sc query, sc config, sc stop, sc start para gerenciar os serviços do 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
fonte
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
fonte
1

O meu está instalado em / usr / share / jenkins Eu pensei que ele foi instalado via apt-get, então talvez você queira verificar lá também.

Ubuntu 12.04.1

dan
fonte
1

Eu não queria instalar o x11-common e outros componentes que vêm incluídos na abordagem apt-get install, então apenas baixei o arquivo .war e executei o comando que François mencionou. Isso funcionou bem, mas você precisa escrever seu próprio script daemon com essa abordagem. Detalhes completos aqui: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci

John
fonte
1

Para atualizar o arquivo WAR do Jenkins, siga as etapas abaixo:

  • Pare o servidor Jenkins usando o comando: systemctl stop jenkins
  • Vá para o local da guerra de Jenkins: ex: /usr/lib/jenkins
  • Faça um backup de jenkins.war: mv jenkins.war jenkins.war_bkp
  • Baixe o Jenkins usando o comando wget ou curl: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Iniciando o servidor Jenkins usando o comando: systemctl start jenkins
  • Verifique o status do servidor Jenkins usando o comando: systemctl status jenkin
Omar Khaled
fonte