Обновите Jenkins из военного файла


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файл новым, а затем перезапустить Jenkins.

Этот файл обычно находится в папке /usr/share/jenkins.

Если это не так для вашей системы, в Manage Jenkins -> System Information, он отобразит путь к .warфайлу в executable-war.


16
На моей машине он находится в / usr / share / jenkins /. После копирования и перезапуска с помощью «перезапуска службы jenkins» он по-прежнему показывает старую версию и предлагает обновление - что я делаю не так?
u123

2
Как насчет согласованности файлов конфигурации после обновления? Вам нужно снова настроить все это? Поддерживают ли они обратную совместимость?
Денис С.

@DEnysS. он сохранит все ваши конфигурации. Я удалил существующий файл войны и переместил новый из загрузок в / usr / share / jenkins, и он работал отлично. (Aptitude не показала обновление для Дженкинса)
Уитни Имура

+1 Это мне очень помогло, потому что текущая версия Ubuntu - 1.6, а военная версия - 2.4. Это огромная разница во внешнем виде и доступности плагинов. Так что это мне очень помогло. Боялся, что мне придется установить Tomcat и сделать это по-своему.
Caperneoignis

1
шаг за шагом ответ @bcmcfc здесь: 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
Матье Руже,

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
ℛɑƒæĿᴿᴹᴿ

Лучшая практика, легко сделать. Спасибо за этот ответ
Джинна Балу

Уф! Вы помогли мне получить сердечный приступ посреди ночи, когда наш Дженкинс заставил нас обновиться и не запускал какие-либо его плагины
Эмджи

12
apt-get update
apt-get upgrade 

безусловно, самый простой способ обновления на linux, работает каждый раз как шарм.


Похоже на CentOS, кстати, yum update jenkinsдолжно это делать.
Nagev

4

Хотя я бы не стал рассматривать это как действительный ответ на вопрос OP, я все же подчеркну, что лучший способ развернуть Jenkins (и, вероятно, большинство, если не все библиотеки / пакеты / программное обеспечение) в 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.
Glenn Plas

3

когда вы откроете панель Jenkins, она покажет доступные пакеты из их последней версии. вы можете загрузить его с помощью команды wget на сервере. после загрузки последнего пакета вы должны взять файл резервной копии .war.

Например: wget http://updates.jenkins-ci.org/download/war/2.205/jenkins.war

Путь к файлу войны Jenkins для Ubuntu - / usr / share / jenkins /

Путь к файлу войны Jenkins для centos - / usr / lib / jenkins /

после создания резервной копии перезапишите военный файл и перезапустите службу jenkins.

Ubuntu - перезапуск службы jenkins, centos - systemctl restart 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')

И еще один сценарий завершения работы кота - копирует войну и перезапускает ее

Мы размещаем его на Windows 2008 и Tomcat, я использую sc query, 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, поэтому я просто загрузил файл .war и выполнил команду, упомянутую Франсуа. Это сработало хорошо, но с таким подходом вам нужно написать собственный сценарий демона. Полная информация здесь: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Чтобы обновить WAR-файл Jenkins, выполните следующие действия:

  • Остановите сервер Jenkins с помощью команды: systemctl stop jenkins
  • Перейти на место войны Дженкинса: ex: /usr/lib/jenkins
  • Сделайте резервную копию с jenkins.war: mv jenkins.war jenkins.war_bkp
  • Загрузите Jenkins с помощью команды 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.