Jenkins'i bir savaş dosyasından güncelleyin


92

Ubuntu 12.04'e sahip bir makinem var ve Jenkins ver'i yükledim. 1.424.6 apt-get kullanarak bu kılavuza dayalıdır , ancak yeni bir sürümü var:

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

İndir'e basarsam, bir jenkins.war dosyası alırım ... ama bunu mevcut kurulumumu yükseltmek için nasıl kullanırım? ya da apt depoları güncellenmeden önce bu mümkün değil mi?

Yanıtlar:


162

Mevcut jenkins.wardosyanın üzerine yenisini yazabilir ve ardından Jenkins'i yeniden başlatabilirsiniz.

Bu dosya genellikle /usr/share/jenkins.

Sisteminiz için durum bu değilse, içinde dosyanın Manage Jenkins -> System Informationyolunu gösterecektir ..warexecutable-war


16
Makinemde / usr / share / jenkins / konumunda bulunuyor. "Service jenkins restart" ile kopyalayıp yeniden başlattıktan sonra, eski sürümü göstermeye devam eder ve bir güncelleme önerir - neyi yanlış yapıyorum?
u123

2
Yükseltmeden sonra yapılandırma dosyalarının tutarlılığı ne olacak? Her şeyi yeniden kurmanız mı gerekiyor? Geriye dönük uyumluluğu destekliyorlar mı?
Denys S.

@EnysS. tüm konfigürasyonlarınızı koruyacaktır. Mevcut savaş dosyasını kaldırdım ve yenisini İndirilenler'den / usr / share / jenkins'e taşıdım ve mükemmel çalıştı. (Yetenek, jenkins için bir güncelleme göstermedi)
Whitney Imura

+1 Bu bana çok yardımcı oldu, çünkü Ubuntu'nun şu anki sürümü 1.6, savaş sürümü 2.4. Görünüm ve his ile eklenti kullanılabilirliğinde büyük bir fark. Bu bana çok yardımcı oldu. Tomcat'i kurmam ve zor yoldan yapmam gerektiğinden endişelendim.
Caperneoignis

1
@bcmcfc'nin buradaki yanıtı adım adım: stackoverflow.com/a/46733405/1404135
3z33etm

32

Jenkins'i apt-get aracılığıyla kurduysanız, gelecekteki sorunları önlemek için Jenkins'i apt-get aracılığıyla da güncellemelisiniz. Güncelleme, "apt-get update" ve ardından "apt-get upgrade" ile çalışmalıdır.

Ayrıntılar için aşağıdaki URL'yi ziyaret edin:

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


13
+1 b / c Ubuntu'nun Jenkins yapılandırmasında neyi değiştirdiğini asla bilemezsiniz. Buna ek olarak: pkg.jenkins-ci.org/debian , apt-get aracılığıyla doğrudan projeden kurulabilen güncellenmiş paketler sağlar.
mabi

Yukarıda belirtilenleri yaparsanız, jenkins'i savaş dosyasından güncellemenize gerek yoktur. Bunun Ubuntu'da daha iyi bir yol olduğunu düşünüyorum.
Ripon Al Wasim

10
Daha önce birlikte Jenkins'i kurduysanız apt-get ancak (yani olmadan pkg.jenkins-ci.org/debian) varsayılan Ubuntu paket deposundan aracılığıyla, yenisini takmadan önce varsayılan Ubuntu paketleri kaldırmak zorunda sudo apt-get remove jenkins jenkins-commonardından sudo apt-get install jenkins. Bunu yapmazsanız, güncelleme başarısız olacaktırtrying 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

1
Harika! Son kararlı bağlantı da faydalı olacaktır: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ

En İyi Uygulama, yapması kolay. Bu yanıt için teşekkürler
Jinna Balu

Vay be! Jenkins'imizin bizi yükseltmeye zorlaması ve eklentilerinin hiçbirini çalıştırmaması ile gecenin ortasında kalp krizi
geçirmeme yardım ettin

12
apt-get update
apt-get upgrade 

Linux üzerinde yükseltmenin açık farkla en kolay yolu, her seferinde bir cazibe gibi çalışıyor.


Bu arada CentOS'ta da benzer, yum update jenkinsyapmalı.
Nagev

4

Bunu OP'nin sorusuna geçerli bir yanıt olarak görmesem de, Ubuntu'da Jenkins'i (ve büyük olasılıkla tüm kitaplıkları / paketleri / yazılımı olmasa da) dağıtmanın en iyi yolunun yetenek (veya apt- yönetim sistemi olsun.

Burada belgelenmiştir: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (LTS yapısını kullanmak istiyorsanız, bu depo http: // pkg. jenkins-ci.org/debian-stable/ )

Dolayısıyla, herhangi bir şans eseri bu yaklaşımı gerçekten kullandıysanız, apt-get upgrade jenkins


Teorik olarak haklısınız, ancak stok yüklemesinden yükseltme yaparken bu işe yaramıyor. En son paketin kurulumundan sonra başlıyor ama 503 hatası veriyor. Orada yazılan prosedürü takip ettim ve tutarlı bir paket durumu elde etmek için Matthieu Rouget çözümünü uygulamak zorunda kaldım.
Glenn Plas

3

Jenkins panelini açtığınızda, en son sürümlerinden mevcut olan paketi gösterecektir. Eğer üzerinden indirebilirsiniz wget server.after indirme komutu yedekleme dosyası .war almalı son paketi.

Örneğin-: wget http://updates.jenkins-ci.org/download/war/2.205/jenkins.war

Ubuntu için Jenkins savaş dosyası yolu - / usr / share / jenkins /

Centos için Jenkins savaş dosyası yolu - / usr / lib / jenkins /

yedeği aldıktan sonra savaş dosyasının üzerine yazın ve jenkins hizmetini yeniden başlatın.

Ubuntu - hizmet jenkins yeniden başlatma, centos - systemctl yeniden başlatma jenkins.service


2

Jenkins'i .war dosyasından aşağıdaki komutla çalıştırıyoruz.

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

Komutu ~ / Downloads dizininden bile çalıştırabilirsiniz.


2

Yeni savaş dosyasını indirmek için bu harika betiği kullanıyorum

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

Ve başka bir komut dosyası tomcat'i kapatır - savaşı kopyalar ve yeniden başlatır

Windows 2008 ve tomcat üzerinde barındırıyoruz, Windows hizmetlerini yönetmek için sc query, sc config, sc stop, sc start kullanıyorum

    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

Benimki / usr / share / jenkins altında kurulu. Apt-get ile kurulduğunu düşündüğüm için orayı da kontrol etmek isteyebilirim.

Ubuntu 12.04.1


1

Apt-get install yaklaşımıyla birlikte gelen x11-common ve diğer bileşenleri yüklemek istemedim, bu yüzden .war dosyasını indirdim ve Francois'in bahsettiği komutu çalıştırdım. Bu iyi çalıştı, ancak bu yaklaşımla kendi artalan süreci betiğinizi yazmanız gerekiyor. Tüm ayrıntılar burada: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Jenkins WAR dosyasını yükseltmek için aşağıdaki adımları izleyin:

  • Şu komutu kullanarak Jenkins sunucusunu durdurun: systemctl stop jenkins
  • Jenkins savaş konumuna gidin: örn: /usr/lib/jenkins
  • Jenkins.war'dan bir yedek alın: mv jenkins.war jenkins.war_bkp
  • Wget veya curl komutunu kullanarak Jenkins'i indirin: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Komut kullanarak Jenkins sunucusunu başlatmak: systemctl start jenkins
  • Şu komutu kullanarak Jenkins sunucusunun durumunu kontrol edin: systemctl status jenkin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.