Java利用jenkins做專案的自動化部署
本地的jekins密碼
2722e8ea873b4cf08884c22dff732bab
這篇文章主要介紹了Java利用jenkins做專案的自動化部署,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
最近領導要求上海本地的專案需要使用進jenkins實現自動化部署,以便可以直接將專案移交給運維的同學,減輕開發的工作量。記錄下這次爬坑的過程。
一、前言
Jenkins是基於Java開發的一種持續整合工具,用於監控持續重複的工作,功能包括:
1、持續的軟體版本釋出/測試專案。
2、監控外部呼叫執行的工作。
上面是我從百科上down下來的,老實說沒看懂,這是個什麼玩意啊?其實以我現在的理解和應用,最多的便是部署了,其他功能待研究╮(╯_╰)╭擼主目前在上海一個不知名國企打工,我們現在專案的釋出流程是:
1、本地或打包伺服器利用maven打成war包
2、遠端或者SSH連上專案伺服器
3、停掉tomcat,刪除舊包和快取,將新打的包放進去
4、重啟tomcat。完成看似步驟簡單,其實佔用了大量開發的的時間。
然後使用jenkins後:
1、點選立即構建,完成。什麼?就點選個按鈕就完成了,沒錯,就是個按鈕。其實在你點選按鈕後jenkins已經幫你把上述該走的流程後臺跑了一遍了,本次就介紹下怎麼讓它後臺跑。
二、安裝構建
本次介紹基於windows,可安裝在開發電腦或者windows server伺服器
1、下載jenkins
jenkins提供多種安裝方式
1.1jenkins.msi安裝 就像我們平時安裝軟體一樣,點點點。下載地址:https://jenkins.io/download/
1.2jenkins.war 包 既然是war包,不用說大家都知道怎麼啟動了,扔到tomcat就行了。下載地址:http://updates.jenkins-ci.org/download/war/
2、啟動jenkins
我個人是比較推薦1.1的安裝方式的,1.2我在使用的時候經常遇到記憶體溢位的問題,當然記憶體溢位是可以調整的,但是多出了多餘的工作量不是嘛。
採用1.1的安裝方式,安裝完成後我們會在windows的服務裡面看到jenkins服務的。如下圖,啟動關閉重啟直接點服務就行了。
採用1.2的的方式下載war包的話,其實有兩種啟動方式。
第一種,放到tomcat容器,
第二種,cmd進入安裝目錄,java -jar jenkins.war
3、安裝jenkins
安裝方式1.1和1.2 的流程是一樣的
jenkins預設8080埠,可以修改,方法百度。
進入http://localhost:8080/。紅色字型路徑有密碼,將密碼填上,然後下一步。
選擇外掛,建議選擇官方建議外掛,避免很多麻煩。
等待安裝中ing......
安裝好後看到下圖,使用者名稱密碼登陸用的,全名是用來顯示的。繼續下一步。
因為我要部署的是maven專案,jenkins預設的外掛中是沒有maven的,首先需要安裝下。
點選下圖外掛直接安裝就行了,maven integration plugins
安裝熱部署外掛Deploy to container Plugin
4、配置jenkins
我們需要配下maven的setting檔案,jdk以及maven地址,setting檔案一定要配,不要用它預設的,擼主因為這個沒配,出問題糾結好久。
最後Apply然後Save就行了,記得別忘了應用儲存,不然白配了。
接著我們來新建一個專案,先輸入專案名,選擇maven專案,OK
選擇原始碼管理,因為我們是企業專案,不是開源,使用的SVN,選擇Subversion配置SVN
URL是你SVN地址,Credentials是賬戶密碼
然後到Pre Steps,這個東西是打包前需要什麼操作,比如我們現在的專案需要拷貝log4j.xml檔案等等,根據環境可以寫windows或者Shell指令碼
沒有操作的話,就不用配了。
貼出我的指令碼給大家參考,相關部分我用XXX替代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
|
Build編譯了,指定pom位置,以及mvn命令,對了高階裡面還可以配置workspace,不配預設在jenkins安裝目錄中
構建後操作,就是包打好了放在哪。選擇下圖
本次構建後操作,使用的是tomcat的熱部署,熱部署可以參考我之前的文章:Tomcat7的熱部署
WAR/EAR:war包的地址
Context:是部署後的包名
UserName/Password是指熱部署tomcat的賬號/密碼
URL:tomcat的介面,如:http://172.16.101.71:8180/
5、開始構建
講了那麼多,終於到了最後了,一個按鈕的操作終於到了,返回jenkins首頁就可以看到我們的專案了。
構建後點擊左下角構建執行狀態中可以看到我們的專案在構建中。點選專案名進入
選擇Console就能看到我們構建過程中打印出來的日誌或者錯誤資訊了。
三、存在的問題
jenkins角色問題,既然是釋出就涉及到生產環境,不能所有使用者都有部署生產環境的許可權吧,如果誰不小心點了下。那後果.....不敢相信。
解決:安裝Role-based Authorization Strategy外掛,其餘步驟參考:http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html 不在詳述。
tomcat熱部署的問題,deploy幾次之後出現記憶體上漲溢位,停止執行或者報錯的問題,網上查了下是熱部署本身的問題,正在尋求解決辦法ing.....。
解決:tomcat熱部署本身存在問題,生產環境一般不會採用熱部署的方式。目前我這邊測試環境因為使用的是windows server 2008系統,所以採用的是熱部署的方式,問題依舊存在,但是我看過一個帖子是說可以使用Windows 批處理命令的方式解決,就是bat命令,不過我還未深入研究過。生產環境Linux系統,目前我使用Publish Over SSH 外掛,具體步驟是配置中加入下圖步驟。
1、在系統管理-》系統設定裡找到Publish over SSH然後輸入:
2、配置Post Steps
這裡還是接著上面的專案,這個配置得安裝了上面的外掛後才會顯示!
Transfer SetSource files:表示要上傳的本地的war包及路徑,可到工作空間去看
Remove prefix:表示要上傳時要去除的資料夾,即只上傳war包
remote driectory:即表示執行時的路徑,相當於把war包上傳到這裡了
exec commad:要執行的命令
如圖,會將war包放到home/admin資料夾,接著我會執行我寫的Shell命令。主要涉及,停止tomcat,備份原war包,刪除webapp下原war包,將home/admin下的新war包拷進來,啟動tomcat,然後就完成了。這樣就避免了熱部署記憶體溢位導致伺服器崩潰的問題了。
指令碼參考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Deploy外掛問題,上文中使用的Deploy to container Plugin外掛來實現熱部署,但是deploy外掛限制一個工程只能部署一個war包,我的專案是,一個工程前後端分離的兩個war,總不能新建兩個專案構建兩次吧, ̄へ ̄。
解決:熱部署儘量不要使用,測試環境暫時使用的話,我目前是,新建兩個工程,每次只編譯一個war包。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。