gitee+Jenkins+tomcat實現自動打包部署

主要實現使用Jenkins從gitee上自動編譯打包部署java項目到tomcat,使用webhook來實現gitee項目上的代碼變動自動觸發打包編譯部署

一、環境準備

主機名

ip

安裝服務

jenkins

192.168.10.100

Jenkins、jdk、maven

tomcat

192.168.10.200

tomcat7、jdk

安裝所需工具:

安裝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,輸入配置的用戶名和密碼登錄,登陸成功顯示如下頁面

clipboard.png

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)同樣不要選自動安裝

clipboard1.png

clipboard2.png

配置完成後保存退出

3、安裝插件

需要安裝Generic Webhook Trigger、Deploy to container Plugin、Git plugin及Maven Integration plugin這四個插件

進入主頁面選系統管理--》插件管理,進入插件管理頁面,在可選插件選項卡下查找這四個插件,安裝完成後需要重啓Jenkins

clipboard3.png

4、配置gitee

gitee上已經創建好一個私有項目,並且跟Jenkins所在主機配置了ssh-key,可以用“git clone” gitee上的項目,測試項目爲zrlog,一個Java寫的開源博客


5、創建Jenkins部署項目

點擊新建,創建一個maven項目(如果不是maven項目可以選自由風格項目)

clipboard4.png

點擊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的用戶。

clipboard5.png

添加完成後,Credentials選擇剛纔添加的git即可

clipboard6.png

如果Credentials配置錯誤,就會報錯

clipboard7.png

在構建觸發器下勾選Generic Webhook Trigger,給抓出來的數據起個變量名ref,抓取內容爲$.ref(看碼雲的文檔)

在Post content parameters後點擊增加,variable填寫ref,Expression填寫$.ref,然後點選下邊的JSONPath

clipboard8.png

好,稍微下來一點,我們只需要獲取POST數據,header和request不用理。接下來也很關鍵,定義過濾出來什麼字串才觸發這個任務。所以使用正則匹配,text爲匹配出什麼結果就觸發這個任務,於是我們填入剛纔抓取臨時存放的變量$ref,注意這裏不是原始數據的$.ref。

^(refs/heads/master)$

clipboard9.png

在build中,配置maven執行命令”clean install -D maven.test.skip=true“

clipboard91.png

在構建後操作下,點擊增加構建後操作,選擇deploy war/ear to a container

WAR/EAR files填寫“**/*.war”,container選擇 tomcat 7.x(根據自己版本選擇),點擊Credentials後add,username和password根據tomcat中配置的填寫即可,我這裏都是tomcat

clipboard92.png

保存退出後,選擇剛纔添加的用戶,Tomcat URL填寫tomcat的IP地址即可,我這裏是192.168.10.200:8080

clipboard93.png

這樣Jenkins基本配置完成,保存退出

6、配置gitee的webhook

登陸gitee,進入zrlog項目,點擊項目名下最右邊的管理選項卡,然後點擊添加

clipboard94.png

進入添加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中的用戶,不要搞混了,地址端口後邊爲固定寫法,不能隨便寫,在構建觸發器是有提示

clipboard95.png

另外,如果Jenkins是在內網部署的,需要把Jenkins端口映射到公網,Jenkins本身是在公網部署只要打開端口,需要gitee能夠跟Jenkins通信即可

clipboard96.png

   點擊測試,返回ok就說明接口能用了,如果返回如下,則用戶名密碼可能沒填或者沒對。

1

2

3

4

{"status":"ok","data":{"triggerResults":{"ANY":"Did not find any jobs to trigger! 

The user invoking /generic-webhook-trigger/invoke must have read permission to any 

jobs that should be triggered. You may try adding http://user:passw@url... or configuring

 and passing an authentication token like ...trigger/invoke?token=TOKENHERE"}}}

三、測試

配置完成後,需要做下測試,是否配置成功

在gitee的zrlog項目下新建一個文件,查看Jenkins中的zrlog是否在執行構建部署

clipboard97.png

查看日誌

clipboard98.png

clipboard99.png

最後顯示部署成功,打開瀏覽器輸入192.168.10.200:8080/zrlog-2.0.4,能夠打開說明配置成功了

四、遇到的問題

安裝配置完成後,測試時build沒有問題,部署到tomcat時報錯

eb8dea1eafb6e8a80ff73c92904afc5.png

沒有部署成功。

後來查資料發現是tomcat的bug,Tomcat的版本是8.5.13,這個bug官方已經收到反饋,並且在8.5.14已經修復,測試的tomcat恰好是8.5.13版本,從官網重新下載最新版本,再次測試就沒有問題了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章