전쟁 파일에서 Jenkins 업데이트


92

Ubuntu 12.04가 설치된 컴퓨터가 있고 Jenkins 버전을 설치했습니다. 1.424.6 apt-get 기반 사용 이 가이드를하지만 새 버전이 있습니다.

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

다운로드를 누르면 jenkins.war 파일이 생성되지만 현재 설치를 업그레이드하는 데 어떻게 사용합니까? 아니면 적절한 저장소가 업데이트되기 전에는 불가능합니까?

답변:


162

기존 jenkins.war파일을 새 파일로 덮어 쓴 다음 Jenkins를 다시 시작할 수 있습니다.

이 파일은 일반적으로 /usr/share/jenkins.

시스템에 해당하지 않는 경우에서 아래 Manage Jenkins -> System Information.war파일 경로가 표시 됩니다 executable-war.


16
내 컴퓨터에서 / usr / share / jenkins /에 있습니다. "service jenkins restart"로 복사하고 다시 시작한 후에도 이전 버전이 표시되고 업데이트를 제안합니다. 내가 뭘 잘못하고 있는가?
U123

2
업그레이드 후 구성 파일의 일관성은 어떻습니까? 모든 것을 다시 설정해야합니까? 이전 버전과의 호환성을 지원합니까?
Denys S.

@DEnysS. 모든 구성을 유지합니다. 기존 war 파일을 제거하고 새 파일을 Downloads에서 / usr / share / jenkins로 이동했는데 완벽하게 작동했습니다. (적성는 젠킨스에 대한 업데이 트를 보이지 않았다)
휘트니 이무에게

+1 이것은 우분투의 현재 버전이 1.6이고 전쟁 버전이 2.4이기 때문에 많은 도움이되었습니다. 모양과 느낌 및 플러그인 가용성에있어 큰 차이가 있습니다. 그래서 이것은 나를 많이 도왔습니다. 바람둥이를 설치하고 어려운 방법으로해야 할까 걱정했습니다.
Caperneoignis

1
@bcmcfc의 답변에 대한 단계별 답변 : stackoverflow.com/a/46733405/1404135
3z33etm

32

apt-get을 통해 Jenkins를 설치 한 경우 향후 문제를 방지하려면 apt-get을 통해 Jenkins도 업데이트해야합니다. 업데이트는 "apt-get update"와 "apt-get upgrade"를 통해 작동합니다.

자세한 내용은 다음 URL을 방문하십시오.

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


13
+1 b / c는 Jenkins 구성에 대해 Ubuntu가 변경 한 사항을 결코 알 수 없습니다. 여기에 추가 : pkg.jenkins-ci.org/debian 은 프로젝트에서 직접 apt-get을 통해 설치할 수있는 업데이트 된 패키지를 제공합니다.
mabi

위에서 언급 한 작업을 수행하면 war 파일에서 jenkins를 업데이트 할 필요가 없습니다. 나는 이것이 우분투에서 더 나은 방법이라고 생각합니다.
Ripon Al Wasim 2013

10
이전에 apt-get을 사용하여 jenkins를 설치했지만 기본 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

휴! Jenkins가 플러그인을 실행하지 않고 업그레이드하도록 강요하여 한밤중에 심장 마비가 발생하지 않도록
도와 주셨습니다

12
apt-get 업데이트
apt-get 업그레이드 

리눅스에서 업그레이드하는 가장 쉬운 방법은 매번 매력적으로 작동합니다.


그런데 CentOS에서 비슷 yum update jenkins합니다.
Nagev

4

이것이 OP의 질문에 대한 유효한 대답으로 간주되지는 않지만 Ubuntu에 Jenkins (그리고 모든 라이브러리 / 패키지 / 소프트웨어는 아닐지라도 대부분)를 배포하는 가장 좋은 방법은 적성 (또는 적절한-)을 활용하는 것임을 강조합니다. get) 관리 시스템.

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu에 문서화되어 있습니다 (LTS 빌드를 사용하려면이 repo http : // pkg를 누르십시오 . jenkins-ci.org/debian-stable/ )

혹시라도 실제로이 접근 방식을 사용했다면 apt-get upgrade jenkins


이론적으로는 옳지 만 재고 설치에서 업그레이드 할 때는 작동하지 않습니다. 최신 패키지를 설치 한 후 시작되지만 503 오류가 발생합니다. 나는 거기에 쓰여진 절차를 따랐고 일관된 pkg 상태를 얻기 위해 Matthieu Rouget의 솔루션을 적용해야했습니다.
Glenn Plas 2014 년

3

Jenkins 패널을 열면 최신 버전에서 사용 가능한 패키지가 표시됩니다. 서버 에서 wget 명령을 통해 다운로드 할 수 있습니다 . 최신 패키지를 다운로드 한 후 .war 백업 파일을 가져와야합니다.

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

Ubuntu의 Jenkins war 파일 경로-/ usr / share / jenkins /

centos의 Jenkins war 파일 경로-/ usr / lib / jenkins /

백업을 한 후 war 파일을 덮어 쓰고 jenkins 서비스를 다시 시작하십시오.

Ubuntu-서비스 젠킨스 재시작, centos-systemctl 재시작 jenkins.service


2

다음 명령을 사용하여 .war 파일에서 jenkins를 실행합니다.

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 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 파일을 다운로드하고 Francois가 언급 한 명령을 실행했습니다. 잘 작동했지만 그 접근 방식으로 자신의 데몬 스크립트를 작성해야합니다. 자세한 내용은 http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Jenkins WAR 파일을 업그레이드하려면 다음 단계를 따르십시오.

  • 다음 명령을 사용하여 Jenkins 서버를 중지합니다. systemctl stop jenkins
  • Jenkins 전쟁 위치로 이동 : 예 : /usr/lib/jenkins
  • jenkins.war에서 백업을 가져옵니다. mv jenkins.war jenkins.war_bkp
  • wget 또는 curl 명령을 사용하여 Jenkins를 다운로드합니다. wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • 다음 명령을 사용하여 Jenkins 서버 시작 : systemctl start jenkins
  • 다음 명령을 사용하여 Jenkins 서버 상태를 확인하십시오. systemctl status jenkin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.