Zaktualizuj Jenkins z pliku wojennego

92

Mam maszynę z Ubuntu 12.04 i zainstalowałem Jenkins ver. 1.424.6 przy użyciu apt-get na podstawie tego przewodnika , ale dostępna jest nowa wersja:

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

Jeśli kliknę przycisk pobierania, otrzymam plik jenkins.war ... ale jak mogę go użyć do zaktualizowania mojej obecnej instalacji? czy nie jest to możliwe, zanim repozytoria apt nie zostaną zaktualizowane?

u123
źródło

Odpowiedzi:

162

Możesz zastąpić istniejący jenkins.warplik nowym, a następnie ponownie uruchomić Jenkins.

Ten plik zwykle znajduje się w /usr/share/jenkins.

Jeśli tak nie jest w twoim systemie, w programie Manage Jenkins -> System Informationzostanie wyświetlona ścieżka do .warpliku w executable-war.

bcmcfc
źródło
16
Na moim komputerze znajduje się w / usr / share / jenkins /. Po skopiowaniu i ponownym uruchomieniu za pomocą „service jenkins restart” nadal wyświetla starą wersję i sugeruje aktualizację - co robię źle?
u123
2
A co ze spójnością plików konfiguracyjnych po aktualizacji? Czy musisz ponownie ustawić całość? Czy obsługują wsteczną kompatybilność?
Denys S.
@DEnysS. zachowa wszystkie twoje konfiguracje. Usunąłem istniejący plik wojny i przeniosłem nowy z Pobrań do / usr / share / jenkins i działał idealnie. (Aptitude nie pokazał aktualizacji dla jenkinsa)
Whitney Imura
+1 To mi bardzo pomogło, ponieważ obecna wersja na Ubuntu to 1.6, podczas gdy wersja wojenna to 2.4. To ogromna różnica w wyglądzie i działaniu oraz dostępności wtyczek. Więc to bardzo mi pomogło. Martwiłem się, że będę musiał zainstalować Tomcat i zrobić to na własnej skórze.
Caperneoignis
1
krok po kroku odpowiedzi @bcmcfc tutaj: stackoverflow.com/a/46733405/1404135
3z33etm
32

Jeśli zainstalowałeś Jenkins przez apt-get, powinieneś także zaktualizować Jenkins przez apt-get, aby uniknąć przyszłych problemów. Aktualizacja powinna działać poprzez „apt-get update”, a następnie „apt-get upgrade”.

Aby uzyskać szczegółowe informacje, odwiedź następujący adres URL:

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

dunni
źródło
13
+1 b / c nigdy nie wiesz, co Ubuntu zmieniło w konfiguracji Jenkinsa. Dodając do tego: pkg.jenkins-ci.org/debian zapewnia zaktualizowane pakiety, które można zainstalować przez apt-get bezpośrednio z projektu.
mabi
Nie ma potrzeby aktualizowania Jenkinsa z pliku wojennego, jeśli zrobisz to wyżej. Myślę, że to lepszy sposób na Ubuntu.
Ripon Al Wasim,
10
Jeśli wcześniej zainstalowano Jenkins z apt-get ale dzięki domyślnym repozytorium Ubuntu paczki (czyli bez pkg.jenkins-ci.org/debian), trzeba usunąć domyślnych pakietów Ubuntu przed zainstalowaniem nowej sudo apt-get remove jenkins jenkins-commonpotem sudo apt-get install jenkins. Jeśli tego nie zrobisz, aktualizacja zakończy się niepowodzeniemtrying 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
źródło
1
Świetny! Ostatni stabilny link jest również przydatny: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ
Najlepsza praktyka, łatwa do wykonania. Dzięki za tę odpowiedź
Jinna Balu
Uff! Pomogłeś mi przed atakiem serca w środku nocy, kiedy nasz Jenkins zmusił nas do aktualizacji i wyłączenia żadnej z jego wtyczek
Emjey
12
aktualizacja apt-get
apt-get upgrade 

zdecydowanie najłatwiejszy sposób aktualizacji na Linuksie, za każdym razem działa jak urok.

Vasan Ramani
źródło
Nawiasem mówiąc, podobnie na CentOS, yum update jenkinspowinno to zrobić.
Nagev,
4

Chociaż nie uważałbym tego za prawidłową odpowiedź na pytanie OP, nadal podkreślałbym, że najlepszym sposobem wdrożenia Jenkinsa (i prawdopodobnie większości, jeśli nie wszystkich bibliotek / pakietów / oprogramowania) na Ubuntu jest wykorzystanie aptitude (lub apt- get) system zarządzania.

Jest to udokumentowane tutaj: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (zauważ, że jeśli chcesz użyć kompilacji LTS, kliknij to repozytorium http: // pkg. jenkins-ci.org/debian-stable/ )

Więc jeśli przypadkiem faktycznie użyłeś tego podejścia, po prostu zrobiłbyś apt-get upgrade jenkins

woozyking
źródło
Teoretycznie masz rację, ale to nie działa podczas aktualizacji z instalacji podstawowej. Po zainstalowaniu najnowszego pakietu uruchamia się, ale wyświetla błąd 503. Postępowałem zgodnie z zapisaną tam procedurą i musiałem zastosować rozwiązanie Matthieu Rouget, aby uzyskać spójny stan pakietu.
Glenn Plas
3

kiedy otworzysz panel Jenkins, pokaże on dostępny pakiet z ich najnowszej wersji. można go pobrać poleceniem wget na serwerze. po ściągnięciu najnowszego pakietu należy wykonać kopię zapasową .war.

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

Ścieżka do pliku wojennego Jenkinsa dla Ubuntu - / usr / share / jenkins /

Ścieżka do pliku wojennego Jenkinsa dla centos - / usr / lib / jenkins /

po wykonaniu kopii zapasowej nadpisz plik wojenny i zrestartuj usługę jenkins.

Ubuntu - restart usługi Jenkins, centos - systemctl restartuje jenkins.service

Sudesh Lakmal Pathirana
źródło
2

Uruchamiamy jenkins z pliku .war za pomocą następującego polecenia.

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

Możesz nawet uruchomić polecenie z katalogu ~ / Downloads

Francois Lacoursiere
źródło
2

Używam tego groovy skryptu, aby pobrać nowy plik wojenny

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

I kolejny skrypt wyłącza tomcat - kopiuje wojnę i uruchamia ją ponownie

Hostujemy go na Windows 2008 i tomcat, używam sc query, sc config, sc stop, sc start do zarządzania usługami 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
źródło
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
źródło
1

Mój jest zainstalowany w katalogu / usr / share / jenkins. Myślałem, że został zainstalowany przez apt-get, więc warto to sprawdzić.

Ubuntu 12.04.1

dan
źródło
1

Nie chciałem instalować x11-common i innych komponentów, które są dostarczane w pakiecie w podejściu apt-get install, więc po prostu pobrałem plik .war i uruchomiłem polecenie, o którym wspomniał Francois. To działało ładnie, ale musisz napisać własny skrypt demona z takim podejściem. Pełne szczegóły tutaj: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci

Jan
źródło
1

Aby zaktualizować plik Jenkins WAR, wykonaj poniższe czynności:

  • Zatrzymaj serwer Jenkins za pomocą polecenia: systemctl stop jenkins
  • Idź do lokacji wojny Jenkins: ex: /usr/lib/jenkins
  • Wykonaj kopię zapasową z jenkins.war: mv jenkins.war jenkins.war_bkp
  • Pobierz Jenkins za pomocą polecenia wget lub curl: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Uruchamianie serwera Jenkins za pomocą polecenia: systemctl start jenkins
  • Sprawdź stan serwera Jenkins za pomocą polecenia: systemctl status jenkin
Omar Khaled
źródło