Jenkins 搭建企業實戰案例 (發佈與回滾)

 

讓咱們的代碼部署變得easy,再也不難,Jenkins是一個可擴展的持續集成引擎,是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins很是易於安裝和配置,簡單易用。本次環境模擬一整套企業生產流程

轉載互聯網

Jenkinshtml

2019年04月24日前端

相關文章java

Jenkins 前端自動發佈 [git 鉤子]linux

持續集成之Jenkins+Gitlab簡介 [一]nginx


環境說明git

服務器IP 服務 備註 10.4.82.119 Jenkins 第一次配置不會的能夠按照個人步驟來 10.4.82.120 gitlab、tomcat 測試環境tomcat端口8083 10.4.82.115 tomcat 測試環境tomcat端口8083 Jenkins發佈回滾流程web

image_1d95jfdj78u08711tnhk871vnh97.png-189.1kB

1、Jenkins介紹及安裝

安裝和介紹都是老生常談的內容了,說了N+1+2+3+4+5+…..的話題了,這裏直接跳過了docker

Jenkins yum安裝https://www.abcdocker.com/abcdocker/3174shell

Jenkins War安裝https://www.abcdocker.com/abcdocker/2897apache

2、Jenkins 安裝配置

安裝完成後的界面以下

image_1d7tvs410bn711sg1spk90hq1m9.png-80.8kB

image_1d7u06a4hk1h3j51orl159t9hm.png-119.7kB

Jenkins插件安裝

Jenkins主要依賴於插件化,咱們進行插件的安裝

Maven Integration Maven編譯插件

Role-based Authorization Strategy 權限控制插件 ## 標題 ##

AnsiColor 輸出Log顏色優化插件

安裝插件的步驟不詳細講解了 https://i4t.com/3174.html詳細介紹

image_1d854mcf9vr3iv8euggbr0b1u.png-125.9kB

image_1d855f3oa1ja91a3s11e21ctm8802r.png-139.3kB

Jenkins 全局配置

1.配置jdk環境
下載
wget http://down.i4t.com/jdk1.8.0_66.tar.gz
$ tar zxf jdk1.8.0_66.tar.gz -C /usr/local/
$ ln –s /usr/local/jdk1.8.0_66 /usr/local/jdk
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
$ java -version

檢查
$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

2.配置maven環境

$ wget  http://down.i4t.com/apache-maven-3.6.1-bin.tar.gz
$ tar xf apache-maven-3.6.0-bin.tar.gz
$ mv apache-maven-3.6.0-bin.tar.gz /usr/local/
$ ln -s /usr/local/apache-maven-3.6.0/ /usr/local/maven
$ vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH
$source /etc/profile
驗證
$ mvn -v
Apache Maven 3.6.0 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T03:58:13-04:00)
Maven home: /usr/local/maven
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_151/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"

咱們須要配置Java環境,以及maven等

123.png-274.9kB

配置JDK環境

image_1d8566suk837g6m1bqbb3u1git38.png-87.2kB

配置Maven環境

image_1d8568e0s1rhb14vuj5915e21g703l.png-48.4kB

下面進行gitlab安裝,用於上傳測試代碼,Jenkins基本上已經配置完畢!

3、gitlab 安裝及配置

Gitlab安裝目前只須要配置一個yum源,yum install 安裝便可

gitlab安裝文檔https://i4t.com/2041.html

我這裏提供了一份hello 的Java代碼用於測試

一共分爲2步

1.在gitlab web界面建立test項目

2.將Java代碼下載push到gitl

代碼下載
wget http://down.i4t.com/hello-world-war-master.zip
[root@abcdocker hello-world-war-master]# yum install -y git && git remote add origin http://10.4.82.120/root/test.git

#這裏須要在gitlab上建立項目,而且複製git地址進行push

[root@abcdocker hello-world-war-master]# git push -u origin master
Username for 'http://10.4.82.120': root
Password for 'http://root@10.4.82.120':
fatal: Authentication failed for 'http://10.4.82.120/root/test.git/'

[root@abcdocker hello-world-war-master]# git push -u origin master
Username for 'http://10.4.82.120': root
Password for 'http://root@10.4.82.120':
Counting objects: 16, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (16/16), 4.64 KiB | 0 bytes/s, done.
Total 16 (delta 0), reused 0 (delta 0)
To http://10.4.82.120/root/test.git
 * [new branch]      master -> master

當咱們將測試代碼上傳完畢後

image_1d8583ndjd4j1mgm3ioteg10qh4s.png-198.9kB

4、建立項目演示

準備工做

1.tomcat 地址相同 (多套狀況)

2.tomcat 端口相同 (多套狀況)

3.web 服務器添加tomcat重啓腳本

4.Jenkins – web免密 (Jenkins-tomcat服務器免密)

5.修改好項目名

進入Jenkins,進行建立項目

12.png-307kB

簡單說一下,我這裏環境的配置

tomcat路徑(多套環境只須要改後綴和端口)
/usr/local/abcdocker-test

tomcat端口 8083

tomcat服務器  10.4.82.115  10.4.82.120
咱們進入82.115和82.120服務器,配置jdk和tomcat,設置端口

配置Tomcat JDK
wget http://down.i4t.com/jdk1.8.0_66.tar.gz
$ tar zxf jdk1.8.0_66.tar.gz -C /usr/local/
$ ln –s /usr/local/jdk1.8.0_66 /usr/local/jdk
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
$ java -version

下載Tomcat
wget wget http://down.i4t.com/apache-tomcat-8.5.39.tar.gz
tar xf apache-tomcat-8.5.39.tar.gz
mv apache-tomcat-8.5.39 abcdocker1-test

#修改端口

sed -i s#8080#8083#g abcdocker1-test/conf/server.xml
## 將默認端口修改成8083

咱們先訪問默認tomcat,檢查是否會由於JDK環境問題致使默認tomcat就沒法啓動

訪問地址ip:8083 tomcat安裝配置參考

image_1d8fg6l5u13ohh7mkrtpotkre9.png-364.7kB

如今咱們的tomcat測試基本上沒有問題

配置Jenkins

1.配置Jenkins 參數化構建

image_1d95f9cv41at41cf21c61c2c1ea99.png-83.6kB

image_1d95fh5of1umb1kek1b441e701ntlm.png-133.6kB

[ 1 ] 建立選項參數

[ 2 ] 建立Git commit版本參數

image_1d95fjqao1mo3lnv17i11nes1rjv13.png-57.6kB

2.Git地址配置

咱們經過https://i4t.com/2041.html安裝完gitlab以後,將代碼上傳完畢。這裏須要輸入項目的git地址

舒適提示:我這裏已經將測試代碼上傳到gitlab上,怎麼上傳代碼看上面的步驟吧。

image_1d95fsv1r1slv1vho5a613g5qg01t.png-245.8kB

複製git地址以後須要配置一點,那就是gitlab的地址。有2種認證方式,一種是經過帳號密碼,在Jenkins上建立帳號密碼,另外就是經過key來認證。key認證明際上就是複製Jenkins服務器的ssh公鑰到gitlab上的SSH key選項。 我這裏以帳號密碼爲主

image_1d95fvua8lanu711l4lvdk1f222a.png-111.1kB

配置完成後

只要沒有紅色報錯便可

image_1d95g3pl0vn31tk21o9h1cqcloa2n.png-91.9kB

3.日誌代碼高亮配置

其餘選項咱們不配置,這裏只配置一個日誌輸出高亮的參數。 沒有的安裝上面的插件

image_1d95g7kiepuq19h3m0a1fg0l634.png-89.3kB

4.maven編譯參數配置

我這裏的編譯參數就是maven默認的編譯參數,具體不講解了。每一個公司的環境不同

clean package -Dmaven.test.skip=true
測試Jenkins就用我這個配置就OK

image_1d95g9fkj1p9scaj8lr6vc147m3h.png-41.8kB

5.構建完執行腳本

咱們須要將構建完執行腳本點開,默認Jenkins不配置shell腳本,Jenkins只是將程序設置成war包,存儲下來。這樣並無發佈到web服務器上

image_1d95gct6i1nmr1a212tc3aqvoo3u.png-62kB

6.發佈及滾回腳本

腳本內容比較多,請直接下載查看

wget http://down.i4t.com/abcdocker-jenkins.txt

腳本解釋

image_1d95gufma16n21hv81hlqtna14d54b.png-272.5kB

除了這幾個要修改,咱們還須要修改tomcat啓動和重啓腳本

內容以下

下載地址wget http://down.i4t.com/abcdocker-test 還須要添加權限+x

#須要修改一下tomcat啓動目錄

#!/bin/bash
# description: Tomcat is a Java Servlet Container
. /etc/profile
TOMCAT_HOME=/usr/local/abcdocker1-test
start () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
    /bin/bash $TOMCAT_HOME/bin/startup.sh
else
    echo "$0 is  running"
fi
}
stop () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
        echo "$0 is not running"
else
        echo "shutting down $0"
        kill -9 "$TOMCAT_PID" && echo "PID $TOMCAT_PID killed."
fi
}
status () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
        echo "$0 is not running"
else
        echo "$0 is running PID is $TOMCAT_PID"
fi
}
case $1 in
start)
start
#tail -f $TOMCAT_HOME/logs/catalina.out
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
#tail -f $TOMCAT_HOME/logs/catalina.out
;;
*)
echo "Usage:$0  {start|stop|status|restart}."
;;
esac

咱們Jenkins點擊保存save,如今Jenkins就配置完畢,咱們進行測試

tomcat須要啓動正常

啓動目錄和啓動腳本都要寫好

image_1d95hkd0tf1r9621pvd1hiv1f8d4o.png-330.3kB

訪問驗證結果

image_1d8fg6l5u13ohh7mkrtpotkre9.png-364.7kB

如今咱們開始使用Jenkins發佈

1.發佈前確認Jenkins和web作免密(我這裏已經作了,不介紹) https://i4t.com/1353.html

2.確保tomcat啓動正常

3.獲取gitlab的git commit地址

咱們如今獲取git commit地址

git commit版本不區分分支,不必定必須在master分支上,其餘分支也會有

image_1d95hqq4719s65f6unb6801nug55.png-225kB

image_1d95hsqr31v4q9p71gi1i5jp2r5i.png-141.2kB

我這裏只配置了test環境,咱們就只演示test環境,其餘環境腳本配置都差很少

點擊項目---->點擊構建

image_1d95i1ssiele386j5p148i17a45v.png-101.2kB

點擊小圓圈

image_1d95i51cc1n756t2ds15o5h6j6c.png-228.7kB

結果說明

git拉代碼

image_1d95icrpn15qot3b1e0bdm1vsg6p.png-217.4kB

Maven編譯步驟

image_1d95idvob1qoc1fcvuradtn74m76.png-266.2kB

執行shell命令

image_1d95ifjk0k871uboni8tshplb7j.png-248.5kB

啓動服務判斷,若是有一臺服務啓動異常,將會暫停發佈。經過nginx upstream_check_module會自動中止異常tomcat請求

image_1d95igh8g12eb1oo1f631slbnkv80.png-235kB

同時web服務器會自動在data目錄建立備份

發版完畢,在shell腳本部分咱們後期能夠修改爲salt,不推薦使用Publish over SSH主要是因爲配置麻煩,環境很差區分。要建立多個Jenkins,使用shell或者引用批量分發腳本最爲簡單

image_1d95ikk3g11p01mnt1cig1ekv1mqv8d.png-203.3kB

image_1d95im6lr1llj13191s8s1bo41l3r8q.png-95kB

發佈回滾腳本流程

image_1d95jfdj78u08711tnhk871vnh97.png-189.1kB

相關文章
相關標籤/搜索