主要實現使用Jenkins從gitee上自動編譯打包部署java項目到tomcat,使用webhook來實現gitee項目上的代碼變動自動觸發打包編譯部署
一、環境準備
安裝所需工具:
安裝Jenkins
安裝jdk、maven
安裝tomcat
二、配置環境
1、安裝配置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,輸入配置的用戶名和密碼登錄,登陸成功顯示如下頁面
2、配置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)同樣不要選自動安裝
配置完成後保存退出
3、安裝插件
需要安裝Generic Webhook Trigger、Deploy to container Plugin、Git plugin及Maven Integration plugin這四個插件
進入主頁面選系統管理--》插件管理,進入插件管理頁面,在可選插件選項卡下查找這四個插件,安裝完成後需要重啓Jenkins
4、配置gitee
gitee上已經創建好一個私有項目,並且跟Jenkins所在主機配置了ssh-key,可以用“git clone” gitee上的項目,測試項目爲zrlog,一個Java寫的開源博客
5、創建Jenkins部署項目
點擊新建,創建一個maven項目(如果不是maven項目可以選自由風格項目)
點擊ok,進入項目配置頁面,描述可以簡單介紹下這個項目
源碼管理選擇git,填寫項目地址([email protected]: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基本配置完成,保存退出
6、配置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就說明接口能用了,如果返回如下,則用戶名密碼可能沒填或者沒對。
三、測試
配置完成後,需要做下測試,是否配置成功
在gitee的zrlog項目下新建一個文件,查看Jenkins中的zrlog是否在執行構建部署
查看日誌
最後顯示部署成功,打開瀏覽器輸入192.168.10.200:8080/zrlog-2.0.4,能夠打開說明配置成功了
四、遇到的問題
安裝配置完成後,測試時build沒有問題,部署到tomcat時報錯
沒有部署成功。
後來查資料發現是tomcat的bug,Tomcat的版本是8.5.13,這個bug官方已經收到反饋,並且在8.5.14已經修復,測試的tomcat恰好是8.5.13版本,從官網重新下載最新版本,再次測試就沒有問題了。