主要實現使用Jenkins從gitee上自動編譯打包部署java項目到tomcat,使用webhook來實現gitee項目上的代碼變更自動觸發打包編譯部署java
1、環境準備git
安裝所需工具:
安裝Jenkins
安裝jdk、maven
安裝tomcat
2、配置環境
一、安裝配置tomcat manager
修改conf/tomcat-users.xml
添加一下內容:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script"/>
說明:添加了admin-gui、manager-gui、manager-script 3個角色,配置一個tomcat用戶,密碼爲tomcat,擁有這3個角色的權限(用來登錄到manager頁面)
啓動tomcat程序
bin/startup.sh
測試配置用戶是否可以登錄
瀏覽器打開192.168.10.200:8080/manager,輸入配置的用戶名和密碼登陸,登錄成功顯示以下頁面
二、配置Jenkins的jdk和maven環境
Jenkins安裝完成後,因爲部署的項目是java-web程序,因此須要jdk和maven環境
jdk和maven安裝目錄分別是/usr/local/jdk1.8.0_144和/usr/local/maven
首先進入Jenkins系統管理--》Global Tool Configuration
選擇「jdk安裝」 --》別名自定義(建議標識jdk版本)--》JAVA_HOME(/usr/local/jdk1.8.0_144) 不要選自動安裝
而後選擇「maven安裝」--》name(自定義)--》MAVEN_HOME(/usr/local/maven)一樣不要選自動安裝
配置完成後保存退出
三、安裝插件
須要安裝Generic Webhook Trigger、Deploy to container Plugin、Git plugin及Maven Integration plugin這四個插件
進入主頁面選系統管理--》插件管理,進入插件管理頁面,在可選插件選項卡下查找這四個插件,安裝完成後須要重啓Jenkins
四、配置gitee
gitee上已經建立好一個私有項目,而且跟Jenkins所在主機配置了ssh-key,能夠用「git clone」 gitee上的項目,測試項目爲zrlog,一個Java寫的開源博客
五、建立Jenkins部署項目
點擊新建,建立一個maven項目(若是不是maven項目能夠選自由風格項目)
點擊ok,進入項目配置頁面,描述能夠簡單介紹下這個項目
源碼管理選擇git,填寫項目地址(git@gitee.com:wangyank/zrlog.git),因爲gitee上的zrlog項目是私有的,還須要配置密鑰,點擊Credentials後的add
類型選擇ssh username with private key,username輸入git,Private Key填寫Jenkins主機的root用戶私鑰(/root/.ssh/id_rsa),root是gitee上配置的ssh key的用戶。
添加完成後,Credentials選擇剛纔添加的git便可
若是Credentials配置錯誤,就會報錯
在構建觸發器下勾選Generic Webhook Trigger,給抓出來的數據起個變量名ref,抓取內容爲$.ref(看碼雲的文檔)
在Post content parameters後點擊增長,variable填寫ref,Expression填寫$.ref,而後點選下邊的JSONPath
好,稍微下來一點,咱們只須要獲取POST數據,header和request不用理。接下來也很關鍵,定義過濾出來什麼字串才觸發這個任務。因此使用正則匹配,text爲匹配出什麼結果就觸發這個任務,因而咱們填入剛纔抓取臨時存放的變量$ref,注意這裏不是原始數據的$.ref。
^(refs/heads/master)$
在build中,配置maven執行命令」clean install -D maven.test.skip=true「
在構建後操做下,點擊增長構建後操做,選擇deploy war/ear to a container
WAR/EAR files填寫「**/*.war」,container選擇 tomcat 7.x(根據本身版本選擇),點擊Credentials後add,username和password根據tomcat中配置的填寫便可,我這裏都是tomcat
保存退出後,選擇剛纔添加的用戶,Tomcat URL填寫tomcat的IP地址便可,我這裏是192.168.10.200:8080
這樣Jenkins基本配置完成,保存退出
六、配置gitee的webhook
登錄gitee,進入zrlog項目,點擊項目名下最右邊的管理選項卡,而後點擊添加
進入添加webhook頁面,url須要填寫Jenkins的url(域名或者公網ip)
URL格式爲 http://有讀權限的用戶名:該用戶名密碼@jenkis地址/generic-webhook-trigger/invoke
如: http://admin:tusmind123@http://10.160.59.236:8990/generic-webhook-trigger/invoke
該處用戶名和密碼爲Jenkins中的用戶,不要搞混了,地址端口後邊爲固定寫法,不能隨便寫,在構建觸發器是有提示
另外,若是Jenkins是在內網部署的,須要把Jenkins端口映射到公網,Jenkins自己是在公網部署只要打開端口,須要gitee可以跟Jenkins通訊便可
點擊測試,返回ok就說明接口能用了,若是返回以下,則用戶名密碼可能沒填或者沒對。
3、測試
配置完成後,須要作下測試,是否配置成功
在gitee的zrlog項目下新建一個文件,查看Jenkins中的zrlog是否在執行構建部署
查看日誌
最後顯示部署成功,打開瀏覽器輸入192.168.10.200:8080/zrlog-2.0.4,可以打開說明配置成功了
4、遇到的問題
安裝配置完成後,測試時build沒有問題,部署到tomcat時報錯
沒有部署成功。
後來查資料發現是tomcat的bug,Tomcat的版本是8.5.13,這個bug官方已經收到反饋,而且在8.5.14已經修復,測試的tomcat剛好是8.5.13版本,從官網從新下載最新版本,再次測試就沒有問題了。