一、前言:Jenkins介紹
Jenkins是一個(gè)開源軟件項(xiàng)目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開放易用的軟件平臺,使軟件的持續(xù)集成和持續(xù)部署變成可能。
本文演示樣例是一個(gè)JavaWeb項(xiàng)目,環(huán)境如下:
服務(wù)器:CentOS 7.3.1611主機(jī)一臺
代碼管理:git
編譯打包:maven
發(fā)布部署:tomcat7
本試驗(yàn)以下下載、解壓、執(zhí)行等操作均在主機(jī)/home/centos目錄下進(jìn)行
傳統(tǒng)工作模式需要通過手動操作大概完成如下幾個(gè)步驟:
1、拉取代碼
2、編譯打包
3、停止tomcat服務(wù)
4、將程序包上傳至tomcat容器內(nèi)
5、啟動tomcat服務(wù)
使用Jenkins可以將上述步驟一鍵完成,再配合相應(yīng)的觸發(fā)器機(jī)制(掃描代碼變動或強(qiáng)制定時(shí)任務(wù)),可以實(shí)現(xiàn)完全的無人干預(yù)、自動完成。它的內(nèi)部工作步驟如下:
1、Jenkins的觸發(fā)器掃描到代碼倉庫發(fā)生變化或者到了設(shè)定好的任務(wù)開始時(shí)間
2、Jenkins使用git到代碼倉庫拉取代碼
3、Jenkins使用maven對拉取的代碼進(jìn)行編譯、打包
4、Jenkins把打包好的war工程傳輸?shù)街付╰omcat的webapps目錄下
5、Jenkins重啟tomcat服務(wù)
二、準(zhǔn)備工作
Git版本控制服務(wù)器:
本實(shí)驗(yàn)中所用的Git代碼服務(wù)器已提前備好,直接使用
CentOS主機(jī)上安裝(已存在可忽略):
1、JDK安裝
本試驗(yàn)中Tomcat和Jenkins都需要依賴JDK,其中最新版的Jenkins需要JDK1.8版本,采用yum安裝
yum install java-1.8.0-openjdk –y
安裝完畢后執(zhí)行java
-version確認(rèn)一下,看到版本號表示成功
2、Tomcat安裝
本試驗(yàn)中Tomcat用來部署JavaWeb項(xiàng)目,Jenkins插件目前只支持到Tomcat7版本
下載安裝包:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz
地址如果失效,可去官網(wǎng)http://tomcat.apache.org/重新找一個(gè)鏈接地址
修改端口:
Tomcat默認(rèn)端口是8080,本試驗(yàn)中主機(jī)該端口已被占用,修改為8082
解壓安裝包后到Tomcat目錄里面conf目錄下編輯server.xml文件,將下圖位置的8080修改為新的端口號:

啟停服務(wù):
到tomcat目錄里面bin目錄下,執(zhí)行./startup啟動,訪問一下,地址:
http://主機(jī)IP:8082。不能訪問基本都是防火墻問題,能出現(xiàn)小貓界面就表示服務(wù)啟動成功,要想停止服務(wù)可以執(zhí)行./shutdown.sh ,也可以找到進(jìn)程pid,執(zhí)行kill -9 pid號。
解決Tomcat啟動慢:
如果發(fā)現(xiàn)Tomcat啟動特別慢,可以打開jdk安裝路徑下/jre/lib/security/java.security這個(gè)文件找到securerandom.source參數(shù)修改為
securerandom.source=file:/dev/./urandom
本試驗(yàn)中該文件路徑為/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/lib/security/java.security
3、Git安裝
yum
-y installgit
安裝完后執(zhí)行g(shù)it --version確認(rèn),看到版本號表示成功
4、Maven安裝
yum-y install maven
安裝完后執(zhí)行mvn -v確認(rèn),看到版本號表示成功
三、安裝Jenkins
下載程序包:
wget http://mirrors.jenkins.io/war/latest/jenkins.war
啟動程序包:
下載的Jenkins程序war包可以用Tomcat發(fā)布,也可以直接執(zhí)行啟動,本試驗(yàn)中Tomcat服務(wù)用于發(fā)布JavaWeb項(xiàng)目,為避免混淆,采用直接執(zhí)行啟動。
啟動命令
java -jarjenkins.war --httpPort=8081
如果不寫端口號參數(shù),默認(rèn)啟動端口是8080
初次啟動控制臺里會生成一個(gè)密碼,對其進(jìn)行復(fù)制
打開訪問地址:http://主機(jī)IP:8081,出現(xiàn)如下頁面

將剛才的密碼進(jìn)行粘貼,也可根據(jù)提示到主機(jī)上
cat /root/.jenkins/secrets/initialAdminPassword找到密碼進(jìn)行復(fù)制粘貼。來到如下頁面

這步是讓選擇推薦安裝還是自定義安裝,之后可以隨時(shí)更改,點(diǎn)第一個(gè),知道用什么插件點(diǎn)第二個(gè)也可以這樣裝的包少一點(diǎn)。安裝的插件都在/root/.jenkins/plugins/下面


直接選擇continue as admin

開始使用,點(diǎn)擊就會進(jìn)來

重置admin密碼:
以后訪問時(shí)會需要賬號密碼,在“系統(tǒng)管理”-“管理用戶”中對admin賬戶進(jìn)行密碼重置修改。
至此完成Jenkins安裝以及初次登錄。
此時(shí)Jenkins運(yùn)行在CentOS當(dāng)前頁面進(jìn)程里,如果關(guān)掉當(dāng)前會話會導(dǎo)致Jenkins服務(wù)停止,可先將服務(wù)停掉,運(yùn)行如下命令進(jìn)行后臺啟動:
nohup java -jarjenkins.war --httpPort=8081 &
如要停止服務(wù),可找到進(jìn)程pid號,執(zhí)行kill-9pid號
四、配置Jenkins
1、插件安裝:
(1)發(fā)布容器插件


選擇可選插件,過濾搜索Deploy toContainerPlugin插件(這個(gè)是支持將代碼部署到tomcat容器的)
勾選,點(diǎn)擊下邊的按鈕:直接安裝,這個(gè)可能時(shí)間較久,等待即可。

(2)Maven工程插件
步驟同上,插件名為MavenIntegration plugin
2、系統(tǒng)配置

(1)JDK,別名是任意的,路徑填寫剛才yum安裝的jdk位置
/usr/lib/jvm/java-1.8.0-openjdk

(2)Git,注意這里的git位置,是可執(zhí)行文件的地址(類似于Java中bin下的java可執(zhí)行文件位置),可通過git --exec-path命令查看路徑,本試驗(yàn)yum安裝的git可執(zhí)行文件位置為/usr/libexec/git-core/git

(3)Maven,選擇剛才yum安裝的maven存放位置
/usr/share/maven

至此Jenkins的基本配置完成。
五、創(chuàng)建任務(wù)
1、新建任務(wù)

2、配置任務(wù)
(1)源碼管理
源碼管理選擇Git,這個(gè)時(shí)候添加url之后,下邊會報(bào)錯(cuò),顯示讓去認(rèn)證,認(rèn)證即可(其他的安裝中又遇到這個(gè)問題),如果認(rèn)證失敗,請下載認(rèn)證Github Authentication plugin插件,這個(gè)在插件管理的可選插件中搜索安裝

(2)構(gòu)建觸發(fā)器

此處默認(rèn)為第一個(gè)選項(xiàng),可以根據(jù)實(shí)際業(yè)務(wù)選擇其他選項(xiàng),
例如:
Build periodically:周期性觸發(fā)執(zhí)行
Poll SCM:周期性掃描代碼倉庫,源代碼發(fā)生變化觸發(fā)執(zhí)行
配置內(nèi)容可以點(diǎn)選后面的問號圓圈查看填寫規(guī)則說明
此試驗(yàn)配置為:每五分鐘執(zhí)行一次,H/5 * * * *
(3)構(gòu)建后操作


此配置是將編譯后的文件**/target/intro.war(就是本試驗(yàn)的JavaWeb項(xiàng)目編譯構(gòu)建后生成的war包)部署到下邊的遠(yuǎn)程Tomcat容器中;這里Containers的用戶名和密碼是Tomcat管理員的賬戶密碼,Tomcat URL就是你需要進(jìn)行部署的遠(yuǎn)程Tomcat服務(wù)器的ip和端口。
這里需要進(jìn)行設(shè)置的是Tomcat的管理員信息,修改Tomcat容器下的conf文件夾下的tomcat-users.xml文件,在內(nèi)添加下邊的內(nèi)容后重啟Tomcat:
至此任務(wù)創(chuàng)建配置完成
六、查看任務(wù)
此時(shí)可以點(diǎn)擊“立即構(gòu)建”,也可以等待定時(shí)任務(wù)自動觸發(fā)。




打開JavaWeb項(xiàng)目驗(yàn)證地址
http://主機(jī)ip:8082/intro

至此,使用Jenkins搭建的持續(xù)集成部署環(huán)境全部完成,項(xiàng)目人員現(xiàn)在只需要專注于程序開發(fā),將完成編寫和測試的代碼提交至代碼倉庫,后續(xù)的編譯、打包、上傳、部署等工作全部由Jenkins根據(jù)事先的配置自動完成。
七、與華為軟件開發(fā)云對比分析
1、軟件易安裝
Jenkins★★★☆
程序包下載后通過命令安裝或者通過web容器發(fā)布,依賴于JDK,需要主機(jī)
華為軟件開發(fā)云★★★★
云上服務(wù),無需任何安裝和依賴,即開即用,需要網(wǎng)絡(luò)
2、工具集成度
Jenkins★★☆☆
依靠插件調(diào)用Git、Maven、Ant等工具,所用到的工具都需要本地安裝
華為軟件開發(fā)云★★★★
工具全部內(nèi)置到了云端服務(wù)上,無需安裝,直接使用
3、工具擴(kuò)展
Jenkins★★★★
插件豐富,自由選擇使用,對不同的軟件環(huán)境均可很好的支持
華為軟件開發(fā)云★★☆☆
所集成的工具種類和版本較為固定,不可自由選擇
4、軟件易使用
Jenkins★★★☆
操作界面友好,各個(gè)配置項(xiàng)均有圖標(biāo)進(jìn)行說明和配置樣例。
華為軟件開發(fā)云★★★☆
產(chǎn)品上有大量的幫助文檔、操作視頻,配合在線客服,從不同角度提供技術(shù)支持
5、自動化任務(wù)功能
Jenkins★★★★
功能強(qiáng)大,支持月周天時(shí)分各個(gè)級別的自由配置
華為軟件開發(fā)云★★☆☆
目前流水線功能支持每天固定一個(gè)時(shí)間或每周某些天的固定時(shí)間,無法進(jìn)行更自由的配置
6、消息通知機(jī)制
Jenkins★★★☆
發(fā)送郵件進(jìn)行通知,郵件內(nèi)容可配置
華為軟件開發(fā)云★★★☆
通過郵件和站內(nèi)消息兩種方式進(jìn)行通知