最近領(lǐng)導(dǎo)要求上海本地的項(xiàng)目需要使用進(jìn)jenkins實(shí)現(xiàn)自動(dòng)化部署,以便可以直接將項(xiàng)目移交給運(yùn)維的同學(xué),減輕開發(fā)的工作量。記錄下這次爬坑的過程。

一、前言

Jenkins是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,功能包括:

1、持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目。

2、監(jiān)控外部調(diào)用執(zhí)行的工作。

上面是我從百科上down下來的,老實(shí)說沒看懂,這是個(gè)什么玩意?。科鋵?shí)以我現(xiàn)在的理解和應(yīng)用,最多的便是部署了,其他功能待研究╮(╯_╰)╭

擼主目前在上海一個(gè)不知名國(guó)企打工,我們現(xiàn)在項(xiàng)目的發(fā)布流程是:

1、本地或打包服務(wù)器利用maven打成war包

2、遠(yuǎn)程或者SSH連上項(xiàng)目服務(wù)器

3、停掉tomcat,刪除舊包和緩存,將新打的包放進(jìn)去

4、重啟tomcat。完成

看似步驟簡(jiǎn)單,其實(shí)占用了大量開發(fā)的的時(shí)間。

然后使用jenkins后:

1、點(diǎn)擊立即構(gòu)建,完成。

什么?就點(diǎn)擊個(gè)按鈕就完成了,沒錯(cuò),就是個(gè)按鈕。其實(shí)在你點(diǎn)擊按鈕后jenkins已經(jīng)幫你把上述該走的流程后臺(tái)跑了一遍了,本次就介紹下怎么讓它后臺(tái)跑。

二、安裝構(gòu)建

本次介紹基于windows,可安裝在開發(fā)電腦或者windows server服務(wù)器

1、下載jenkins

  jenkins提供多種安裝方式

1.1 jenkins.msi安裝 就像我們平時(shí)安裝軟件一樣,點(diǎn)點(diǎn)點(diǎn)。下載地址:https://jenkins.io/download/ 

1.2 jenkins.war 包   既然是war包,不用說大家都知道怎么啟動(dòng)了,扔到tomcat就行了。下載地址:http://updates.jenkins-ci.org/download/war/

2、啟動(dòng)jenkins

我個(gè)人是比較推薦1.1的安裝方式的,1.2我在使用的時(shí)候經(jīng)常遇到內(nèi)存溢出的問題,當(dāng)然內(nèi)存溢出是可以調(diào)整的,但是多出了多余的工作量不是嘛。

采用1.1的安裝方式,安裝完成后我們會(huì)在windows的服務(wù)里面看到j(luò)enkins服務(wù)的。如下圖,啟動(dòng)關(guān)閉重啟直接點(diǎn)服務(wù)就行了。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

采用1.2的的方式下載war包的話,其實(shí)有兩種啟動(dòng)方式。

第一種,放到tomcat容器,

第二種,cmd進(jìn)入安裝目錄,java -jar jenkins.war

 3、安裝jenkins

安裝方式1.1和1.2 的流程是一樣的

jenkins默認(rèn)8080端口,可以修改,方法百度。

進(jìn)入http://localhost:8080/。紅色字體路徑有密碼,將密碼填上,然后下一步。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

選擇插件,建議選擇官方建議插件,避免很多麻煩。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

等待安裝中ing......

安裝好后看到下圖,用戶名密碼登陸用的,全名是用來顯示的。繼續(xù)下一步。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 因?yàn)槲乙渴鸬氖莔aven項(xiàng)目,jenkins默認(rèn)的插件中是沒有maven的,首先需要安裝下。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

點(diǎn)擊下圖插件直接安裝就行了,maven integration plugins

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

安裝熱部署插件Deploy to container Plugin

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 4、配置jenkins

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

我們需要配下maven的setting文件,jdk以及maven地址,setting文件一定要配,不要用它默認(rèn)的,擼主因?yàn)檫@個(gè)沒配,出問題糾結(jié)好久。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

最后Apply然后Save就行了,記得別忘了應(yīng)用保存,不然白配了。

接著我們來新建一個(gè)項(xiàng)目,先輸入項(xiàng)目名,選擇maven項(xiàng)目,OK

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 選擇源碼管理,因?yàn)槲覀兪瞧髽I(yè)項(xiàng)目,不是開源,使用的SVN,選擇Subversion配置SVN

URL是你SVN地址,Credentials是賬戶密碼

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

然后到Pre Steps,這個(gè)東西是打包前需要什么操作,比如我們現(xiàn)在的項(xiàng)目需要拷貝log4j.xml文件等等,根據(jù)環(huán)境可以寫windows或者Shell腳本

沒有操作的話,就不用配了。

貼出我的腳本給大家參考,相關(guān)部分我用XXX替代

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn) View Code

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

Build編譯了,指定pom位置,以及mvn命令,對(duì)了高級(jí)里面還可以配置workspace,不配默認(rèn)在jenkins安裝目錄中

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 構(gòu)建后操作,就是包打好了放在哪。選擇下圖

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

本次構(gòu)建后操作,使用的是tomcat的熱部署,熱部署可以參考我之前的文章:Tomcat7的熱部署

WAR/EAR:war包的地址

Context:是部署后的包名

UserName/Password是指熱部署tomcat的賬號(hào)/密碼

URL:tomcat的界面,如:http://172.16.101.71:8180/

5、開始構(gòu)建

講了那么多,終于到了最后了,一個(gè)按鈕的操作終于到了,返回jenkins首頁(yè)就可以看到我們的項(xiàng)目了。

 photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

構(gòu)建后點(diǎn)擊左下角構(gòu)建執(zhí)行狀態(tài)中可以看到我們的項(xiàng)目在構(gòu)建中。點(diǎn)擊項(xiàng)目名進(jìn)入

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

選擇Console就能看到我們構(gòu)建過程中打印出來的日志或者錯(cuò)誤信息了。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

三、存在的問題

jenkins角色問題,既然是發(fā)布就涉及到生產(chǎn)環(huán)境,不能所有用戶都有部署生產(chǎn)環(huán)境的權(quán)限吧,如果誰(shuí)不小心點(diǎn)了下。那后果.....不敢相信。

解決:安裝Role-based Authorization Strategy插件,其余步驟參考:http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html  不在詳述。

tomcat熱部署的問題, deploy幾次之后出現(xiàn)內(nèi)存上漲溢出,停止運(yùn)行或者報(bào)錯(cuò)的問題,網(wǎng)上查了下是熱部署本身的問題,正在尋求解決辦法ing.....。

解決:tomcat熱部署本身存在問題,生產(chǎn)環(huán)境一般不會(huì)采用熱部署的方式。目前我這邊測(cè)試環(huán)境因?yàn)槭褂玫氖莣indows server 2008系統(tǒng),所以采用的是熱部署的方式,問題依舊存在,但是我看過一個(gè)帖子是說可以使用Windows 批處理命令的方式解決,就是bat命令,不過我還未深入研究過。生產(chǎn)環(huán)境Linux系統(tǒng),目前我使用Publish Over SSH 插件,具體步驟是配置中加入下圖步驟。

1、在系統(tǒng)管理-》系統(tǒng)設(shè)置里找到Publish over SSH 然后輸入:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

2、配置Post Steps
這里還是接著上面的項(xiàng)目,這個(gè)配置得安裝了上面的插件后才會(huì)顯示!

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

Transfer SetSource files:表示要上傳的本地的war包及路徑,可到工作空間去看

Remove prefix:表示要上傳時(shí)要去除的文件夾,即只上傳war包

remote driectory:即表示執(zhí)行時(shí)的路徑,相當(dāng)于把war包上傳到這里了

exec commad:要執(zhí)行的命令

如圖,會(huì)將war包放到home/admin文件夾,接著我會(huì)執(zhí)行我寫的Shell命令。主要涉及,停止tomcat,備份原war包,刪除webapp下原war包,將home/admin下的新war包拷進(jìn)來,啟動(dòng)tomcat,然后就完成了。這樣就避免了熱部署內(nèi)存溢出導(dǎo)致服務(wù)器崩潰的問題了。

腳本參考:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn) View Code

Deploy插件問題,上文中使用的Deploy to container Plugin插件來實(shí)現(xiàn)熱部署,但是deploy插件限制一個(gè)工程只能部署一個(gè)war包,我的項(xiàng)目是,一個(gè)工程前后端分離的兩個(gè)war,總不能新建兩個(gè)項(xiàng)目構(gòu)建兩次吧, ̄へ ̄。

 解決:熱部署盡量不要使用,測(cè)試環(huán)境暫時(shí)使用的話,我目前是,新建兩個(gè)工程,每次只編譯一個(gè)war包。

?本博客只適用于研究學(xué)習(xí)為目的,大多為學(xué)習(xí)筆記,如有錯(cuò)誤歡迎指正,如有誤導(dǎo)敬請(qǐng)諒解(本人盡力保證90%的驗(yàn)證和10%的猜想)。 

?如果這篇文章對(duì)你有一點(diǎn)點(diǎn)的幫助請(qǐng)給一份推薦! 謝謝!你們的鼓勵(lì)是我繼續(xù)前進(jìn)的動(dòng)力。

http://www.cnblogs.com/allanzhang/p/7076360.html