Оновіть Дженкінса з файлу війни


92

У мене є машина з Ubuntu 12.04 і я встановив Jenkins ver. 1.424.6 за допомогою apt-get на основі цього посібника , але є нова версія:

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

Якщо натиснути кнопку завантаження, я отримую файл jenkins.war ... але як я можу використовувати його для оновлення моєї поточної інсталяції? чи це неможливо до оновлення сховищ apt?

Відповіді:


162

Ви можете перезаписати наявний jenkins.warфайл новим, а потім перезапустити Дженкінса.

Цей файл зазвичай знаходиться в /usr/share/jenkins.

Якщо це не так для вашої системи, у Manage Jenkins -> System Information, вона відобразить шлях до .warфайлу під executable-war.


16
На моїй машині вона знаходиться в / usr / share / jenkins /. Після копіювання та перезапуску за допомогою "service jenkins restart" він все ще відображає стару версію та пропонує оновлення - що я роблю не так?
u123

2
А як щодо узгодженості файлів конфігурації після оновлення? Вам потрібно все налаштувати заново? Чи підтримують вони зворотну сумісність?
Денис С.

@DEnysS. він збереже всі ваші конфігурації. Я видалив існуючий військовий файл і перемістив новий із Завантажень в / usr / share / jenkins, і він працював чудово. (Aptitude не показав оновлення для дженкінів)
Уітні Імура

+1 Це мені дуже допомогло, оскільки поточна версія Ubuntu - 1.6, а військова - 2.4. Це величезна різниця у зовнішньому вигляді та доступності плагінів. Тож це мені дуже допомогло. Переживав, що мені доведеться встановити tomcat і зробити це важким способом.
Капернеоаніс,

1
крок за кроком @bcmcfc «s відповідь тут: stackoverflow.com/a/46733405/1404135
3z33etm

32

Якщо ви встановили Jenkins через apt-get, вам слід також оновити Jenkins через apt-get, щоб уникнути майбутніх проблем. Оновлення має працювати за допомогою "apt-get update", а потім "apt-get upgrade".

Для отримання детальної інформації відвідайте наступну URL-адресу:

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


13
+1 b / c, ви ніколи не знаєте, що змінила Ubuntu щодо конфігурації Jenkins. Додаючи до цього: pkg.jenkins-ci.org/debian надає оновлені пакунки, які можна встановити за допомогою apt-get безпосередньо з проекту.
mabi

Не потрібно оновлювати jenkins з файлу війни, якщо ви зробите це, згадане вище. Я думаю, що це кращий спосіб на Ubuntu.
Ріпон Аль-Васім

10
Якщо ви раніше встановили Дженкінс з APT-отримати , але за замовчуванням Ubuntu репозиторій пакета (тобто без pkg.jenkins-ci.org/debian), ви повинні видалити пакети Ubuntu за замовчуванням перед установкою нового sudo apt-get remove jenkins jenkins-commonтоді sudo apt-get install jenkins. Якщо ви цього не зробите, оновлення не відбудеться вtrying 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
Чудово! Останнє стабільне посилання також корисно: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ

Краща практика, проста у виконанні. Дякую за цю відповідь
Jinna Balu

Фу! Ви допомогли мені від серцевого нападу посеред ночі, коли наш Дженкінс змусив нас модернізувати і не
запускав

12
apt-get update
apt-get оновлення 

Безперечно, найпростіший спосіб оновлення на Linux працює щоразу як привабливість.


Подібно до CentOS, yum update jenkinsварто це зробити.
Нагєв

4

Хоча я не вважав би це вірною відповіддю на запитання OP, я все одно наголошував, що найкращий спосіб розгорнути Дженкінса (і, мабуть, більшість, якщо не всі бібліотеки / пакети / програмне забезпечення) на Ubuntu - це використовувати aptitude (або apt- отримати) система управління.

Це задокументовано тут: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (зверніть увагу, що якщо ви хочете використовувати збірку LTS, натисніть на це репо http: // pkg. jenkins-ci.org/debian-stable/ )

Отже, якщо випадково ви справді застосували цей підхід, ви просто зробите apt-get upgrade jenkins


Теоретично ви маєте рацію, але це не спрацьовує під час оновлення з інсталяції. Після встановлення останнього пакету він запускається, але видає помилку 503. Я дотримувався написаної там процедури, і мені довелося застосувати рішення Матьє Руже, щоб отримати послідовний стан pkg.
Гленн Плас,

3

коли ви відкриваєте панель Jenkins, вона відображатиме доступний пакет з останньої версії. Ви можете завантажити його за допомогою команди wget на сервері. після завантаження останнього пакету ви повинні взяти файл .war резервної копії.

Наприклад: wget http://updates.jenkins-ci.org/download/war/2.205/jenkins.war

Шлях до файлу війни Дженкінса для Ubuntu - / usr / share / jenkins /

Шлях до файлу війни Дженкінса для centos - / usr / lib / jenkins /

після резервного копіювання перезапишіть військовий файл і перезапустіть службу jenkins.

Ubuntu - перезапуск служби jenkins, centos - перезапуск systemctl jenkins.service


2

Ми запускаємо jenkins із файлу .war за допомогою наступної команди.

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

Ви навіть можете запустити команду з каталогу ~ / Downloads


2

Я використовую цей грузний сценарій для завантаження нового файлу війни

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

І ще один сценарій вимкнення tomcat - копіює війну і перезапускає її

Ми розміщуємо його на Windows 2008 та Tomcat, я використовую запит sc, sc config, sc stop, sc start для управління службами 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

Шахта встановлена ​​під / usr / share / jenkins. Я думав, що вона була встановлена ​​через apt-get, тому, можливо, захочеться також перевірити там.

Ubuntu 12.04.1


1

Я не хотів встановлювати x11-common та інші компоненти, що входять до комплекту підходу apt-get install, тому я просто завантажив файл .war і запустив команду, яку згадав Франсуа. Це добре працювало, але з таким підходом потрібно написати власний сценарій демона. Повна інформація тут: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Щоб оновити файл WAR Дженкінса, виконайте наведені нижче дії.

  • Зупиніть сервер Jenkins за допомогою команди: systemctl stop jenkins
  • Перейти до місця війни Дженкінса: екс: /usr/lib/jenkins
  • Візьміть резервну копію з jenkins.war: mv jenkins.war jenkins.war_bkp
  • Завантажте Дженкінса за допомогою команди wget або curl: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Запуск сервера Jenkins за допомогою команди: systemctl start jenkins
  • Перевірте стан сервера Jenkins за допомогою команди: systemctl status jenkin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.