Cập nhật Jenkins từ hồ sơ chiến tranh


91

Tôi có một máy chạy Ubuntu 12.04 và đã cài đặt Jenkins ver. 1.424.6 sử dụng apt-get dựa trên hướng dẫn này , nhưng có một phiên bản mới:

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

Nếu tôi nhấn tải xuống, tôi nhận được tệp jenkins.war ... nhưng làm cách nào để sử dụng tệp đó để nâng cấp cài đặt hiện tại của tôi? hoặc điều đó là không thể trước khi các kho apt được cập nhật?

Câu trả lời:


161

Bạn có thể ghi đè lên hiện có jenkins.war tệp bằng tệp mới và sau đó khởi động lại Jenkins.

Tập tin này thường nằm trong /usr/share/jenkins.

Nếu đây không phải là trường hợp của hệ thống của bạn, trong Manage Jenkins -> System Information, nó sẽ hiển thị đường dẫn đến .wartệp bên dưới executable-war.


16
Trên máy của tôi, nó nằm trong / usr / share / jenkins /. Sau khi sao chép và khởi động lại bằng "service jenkins restart" nó vẫn hiển thị phiên bản cũ và đề xuất cập nhật - tôi đang làm gì sai?
u123

2
Điều gì về tính nhất quán của các tệp cấu hình sau khi nâng cấp? Bạn có cần thiết lập lại toàn bộ không? Chúng có hỗ trợ khả năng tương thích ngược không?
Denys S.

@DEnysS. nó sẽ giữ tất cả các cấu hình của bạn. Tôi đã xóa tệp chiến tranh hiện có và chuyển tệp mới từ Tải xuống sang / usr / share / jenkins và nó hoạt động hoàn hảo. (Aptitude không cho thấy một bản cập nhật cho Jenkins)
Whitney Imura

+1 Điều này đã giúp tôi rất nhiều, vì phiên bản hiện tại trên Ubuntu là 1.6 trong khi phiên bản chiến tranh là 2.4. Sự khác biệt rất lớn về giao diện và tính khả dụng của plugin. Vì vậy, điều này đã giúp tôi rất nhiều. Tôi lo lắng rằng tôi sẽ phải cài đặt tomcat và thực hiện nó một cách khó khăn.
Caperneoignis

1
từng bước của @bcmcfc 's trả lời ở đây: stackoverflow.com/a/46733405/1404135
3z33etm

32

Nếu bạn đã cài đặt Jenkins thông qua apt-get, bạn cũng nên cập nhật Jenkins qua apt-get để tránh các sự cố sau này. Cập nhật sẽ hoạt động thông qua "apt-get update" và sau đó là "apt-get upgrade".

Để biết chi tiết, hãy truy cập URL sau:

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


13
+1 b / c bạn không bao giờ biết Ubuntu đã thay đổi gì về cấu hình Jenkins. Thêm vào đó: pkg.jenkins-ci.org/debian cung cấp các gói cập nhật có thể cài đặt thông qua apt-get trực tiếp từ dự án.
mabi

Không cần cập nhật jenkins từ tệp war nếu bạn làm điều đó đã đề cập ở trên. Tôi nghĩ đây là cách tốt hơn trên Ubuntu.
Ripon Al Wasim

10
Nếu trước đó bạn đã cài đặt jenkins bằng apt-get nhưng thông qua kho lưu trữ gói Ubuntu mặc định (tức là không có pkg.jenkins-ci.org/debian), bạn phải gỡ bỏ các gói Ubuntu mặc định trước khi cài đặt gói mới sudo apt-get remove jenkins jenkins-common sau đó sudo apt-get install jenkins. Nếu bạn không làm điều đó, bản cập nhật sẽ không thành côngtrying to overwrite '/usr/share/jenkins/jenkins.war', which is also in package jenkins-common 1.424.6+dfsg-1ubuntu0.1
Matthieu Rouget

30
#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
Tuyệt quá! Bài liên kết ổn định cũng rất hữu ích: updates.jenkins-ci.org/stable/latest/jenkins.war
ℛɑƒæĿᴿᴹᴿ

Thực hành tốt nhất, dễ làm. Cảm ơn cho câu trả lời này
Jinna Balu

Phù! Bạn đã giúp tôi nhận được từ một cơn đau tim trong lúc nửa đêm với Jenkins chúng tôi buộc chúng ta phải nâng cấp và không chạy bất kỳ plugin của nó
Emjey

12
apt-get cập nhật
nâng cấp apt-get 

cho đến nay là cách dễ nhất để nâng cấp trên linux, luôn hoạt động như một sự quyến rũ.


Tương tự trên CentOS bằng cách này, yum update jenkinsnên làm điều đó.
Nagev,

4

Mặc dù tôi sẽ không coi đây là câu trả lời hợp lệ cho câu hỏi của OP, nhưng tôi vẫn nhấn mạnh rằng cách tốt nhất để triển khai Jenkins (và rất có thể nếu không phải tất cả các thư viện / gói / phần mềm) trên Ubuntu là tận dụng aptitude (hoặc apt- lấy) hệ thống quản lý.

Nó được ghi lại ở đây: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu (lưu ý rằng nếu bạn muốn sử dụng bản dựng LTS, hãy nhấn vào repo này http://pkg. jenkins-ci.org/debian-stable/ )

Vì vậy, nếu tình cờ bạn thực sự sử dụng phương pháp này, bạn chỉ cần thực hiện apt-get upgrade jenkins


Về lý thuyết, bạn đúng nhưng điều đó không hiệu quả khi nâng cấp từ cài đặt gốc. Sau khi cài đặt gói mới nhất, nó đang khởi động nhưng xuất hiện lỗi 503. Tôi đã làm theo quy trình được viết ở đó và tôi phải áp dụng giải pháp của Matthieu Rouget để có được trạng thái pkg nhất quán.
Glenn Plas

3

khi bạn mở bảng Jenkins, nó sẽ hiển thị gói có sẵn từ phiên bản mới nhất của họ. bạn có thể tải xuống thông qua lệnh wget trong máy chủ. sau khi tải xuống gói mới nhất, bạn sẽ lấy tệp sao lưu .war.

Ví dụ: wget http://updates.jenkins-ci.org/download/war/2.205/jenkins.war

Đường dẫn tệp chiến tranh Jenkins cho Ubuntu - / usr / share / jenkins /

Đường dẫn tệp chiến tranh Jenkins cho centos - / usr / lib / jenkins /

Sau khi sao lưu, hãy ghi đè lên tệp war và khởi động lại dịch vụ jenkins.

Ubuntu - khởi động lại dịch vụ jenkins, centos - systemctl khởi động lại jenkins.service


2

Chúng tôi chạy jenkins từ tệp .war bằng lệnh sau.

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

Bạn thậm chí có thể chạy lệnh từ thư mục ~ / Downloads


2

Tôi sử dụng tập lệnh thú vị này để tải xuống tệp chiến tranh mới

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

Và một tập lệnh khác tắt tomcat - sao chép cuộc chiến và khởi động lại nó

Chúng tôi lưu trữ nó trên windows 2008 và tomcat, tôi sử dụng sc query, sc config, sc stop, sc start để quản lý các dịch vụ 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

Của tôi được cài đặt dưới / usr / share / jenkins Tôi nghĩ nó đã được cài đặt qua apt-get nên cũng có thể muốn kiểm tra ở đó.

Ubuntu 12.04.1


1

Tôi không muốn cài đặt x11-common và các thành phần khác đi kèm trong phương pháp tiếp cận cài đặt apt-get, vì vậy tôi chỉ tải xuống tệp .war và chạy lệnh mà Francois đã đề cập. Điều đó hoạt động tốt, nhưng bạn phải viết tập lệnh daemon của riêng mình với cách tiếp cận đó. Chi tiết đầy đủ tại đây: http://strem.in/stream/9488/Using-the-war-file-for-jenkins-ci


1

Để nâng cấp tệp Jenkins WAR, hãy làm theo các bước bên dưới:

  • Dừng máy chủ Jenkins bằng lệnh: systemctl stop jenkins
  • Đi đến địa điểm chiến tranh Jenkins: ví dụ: /usr/lib/jenkins
  • Sao lưu từ jenkins.war: mv jenkins.war jenkins.war_bkp
  • Tải xuống Jenkins bằng lệnh wget hoặc curl: wget http://updates.jenkinsci.org/download/war/(version)/jenkins.war
  • Khởi động máy chủ Jenkins bằng lệnh: systemctl start jenkins
  • Kiểm tra trạng thái máy chủ Jenkins bằng lệnh: systemctl status jenkin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.