
什么是Jenkins?
Jenkins是一個開源的、提供友好操作界面的持續(xù)集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持續(xù)、自動的構(gòu)建測試軟件項目、監(jiān)控外部任務(wù)的運行(這個比較抽象,暫且寫上,不做解釋)。Jenkins用Java語言編寫,可在Tomcat等流行的servlet容器中運行,也可獨立運行。 通常與版本管理工具(SCM)、構(gòu)建工具結(jié)合使用;常用的版本控制工具有SVN、GIT,構(gòu)建工具有Maven、Ant、Gradle。
Jenkins兩大特性
1.持續(xù)集成(Continuous integration, CI)

持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡快地發(fā)現(xiàn)集成錯誤。許多團隊發(fā)現(xiàn)這個過程可以大大減少集成的問題,讓團隊能夠更快的開發(fā)內(nèi)聚的軟件。
持續(xù)集成有以下幾個優(yōu)點:
從檢出代碼、編譯構(gòu)建、運行測試、結(jié)果記錄、測試統(tǒng)計等都是自動完成的,減少人工干預(yù);
任何時間、任何地點生成可部署的軟件,出現(xiàn)問題,項目成員會被馬上通知到,問題第一時間修復(fù);
增強項目可見性,有效的控制臺日志能幫助我們更好的解決存在的問題。
2.持續(xù)交付(Continuous delivery, CD)
持續(xù)交付則是經(jīng)典的敏捷的軟件開發(fā)方法的自然延伸,它強調(diào)產(chǎn)品在修改后到部署上線的流程要敏捷話、自動化。甚至一些較小的改變也要盡早的部署上線。通俗的講可以有幾個特點:
代碼越早交付出去,用戶越早能用到,快就是商業(yè)價值;
用戶反饋能及時作出處理,能幫助產(chǎn)品市場人員調(diào)整測策略;
降低修改成本。

前后對比
1.傳統(tǒng)的項目部署

2.持續(xù)部署

Jekins的安裝
官方下載地址:https://jenkins.io/download/

我選擇下載的war包,將war包用xftps傳到自己的服務(wù)器后有兩種方式可以啟動jenkins:
第一種: ? 將war包移至tomcat/webapps下,啟動tomcat ? 瀏覽器輸入: 你的IP地址:tomcat開放的端口號
第二種:
進入你war包存放的位置,輸入以下指令后臺啟動jenkins:
nohup java -jar jenkins.war --logfile=server.log --httpPort=8088 > server.log 2>& 1 &
默認情況不指定--httpPort的話jenkins使用的是8080端口,在此我指定的端口是8088
Jenkins的配置
以下為Jenkins的主界面:

其中主要的配置都是在系統(tǒng)管理中設(shè)置:
在
系統(tǒng)設(shè)置里設(shè)置全局設(shè)置相關(guān)的內(nèi)容;在
全局安全配置里配置各用戶權(quán)限;在全局工具里配置相應(yīng)的項目運行環(huán)境,比如JDK,MAVEN等;
在插件管理中添加自己想要使用的插件;
在節(jié)點管理中管理自己的服務(wù)器集群。

全局工具配置

配置JDK、Git、Maven等路徑。
插件管理

在插件管理中插件類型眾多,很大程度的滿足了我們的需求,可以選擇自己需要使用的插件,也可以制作相應(yīng)的插件上傳。
常用的插件:

主要介紹以下幾個插件:
GitHub Branch Source Plugin :代碼倉庫;
Deploy to container Plugin :部署代碼至相應(yīng)的容器;
Maven Integration Plugin :構(gòu)建Maven項目需要使用此插件;
SSH Plugin 和 SSH Slave Plugin :配置免密登錄某一節(jié)點需要使用到;
節(jié)點管理

新建項目

選擇需要怎樣構(gòu)建一個項目,在此以構(gòu)建一個自由風(fēng)格的軟件項目為例。
源碼管理

設(shè)置倉庫url,構(gòu)建時從此倉庫獲得源碼。這里不僅可以使用Git源碼管理,同樣可以使用SVN,Coding等別的倉庫,需要下載相應(yīng)的插件。
構(gòu)建觸發(fā)器

構(gòu)建觸發(fā)器是指以何種方式來觸發(fā)自動構(gòu)建:
- 第一種:觸發(fā)遠程構(gòu)建(例如,使用腳本)

圖中的身份證令牌(TOKEN_NAME)即為要觸發(fā)構(gòu)建需要的KEY,訪問URL中加入key后才可自動觸發(fā)自動構(gòu)建。
第二種:在其他工程構(gòu)建后觸發(fā);
第三種:定時構(gòu)建;
第四種:GitHub hook trigger for GITScm polling,使用github上的webhook鉤子來實現(xiàn)代碼push時,發(fā)送相應(yīng)的請求,該請求即為我們觸發(fā)自動構(gòu)建的URL加key;
第五種:輪詢SCM,
構(gòu)建
此處選擇的是執(zhí)行相應(yīng)的shell命令:

BUILD_ID=DONTKILLME
. /etc/profile
export PROJ_PATH=pwd
export TOMCAT_APP_PATH=/usr/local/tomcat/apache-tomcat-8.5.34
sh $PROJ_PATH/order/deploy.sh
其中前四句指令是在/etc/profile/路徑下添加PROJ_PATH(項目路徑)的環(huán)境配置,TOMVAT_APP_PATH(tomcat路徑),最后一個是執(zhí)行項目中的腳本。