您好,登錄后才能下訂單哦!
如何搭建Jenkins + Git + Maven + tomcat + nexus集成環境,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
實現“自動構建、部署”web應用
1、安裝環境
操作系統:Centos 7.2
JDK:1.8.x
Maven:3.5.x
Git: 1.8.1,自建GitLab平臺
tomcat:8.x
2.第三方安裝安裝和環境配置
增加hosts解析
JDK、Git、Maven、tomcat在上述2個宿主機器上都需要安裝,即jenkins master和slave都需要這些環境。
1)JDK安裝:略;安裝后之后,請注意配置JAVA_HOME環境變量。
2)Maven安裝:從apache下載tar.gz壓縮包,在合適的目錄下解壓即可。此后配置M2_HOME環境變量。
如果使用私服的Maven中央倉庫 nexus,要指定 /usr/server/apache-maven-3.5.0/conf/settings.xml
3)tomcat安裝:略。
4)Git:安裝非常簡單,直接執行“yum install git”即可。
5)如果你的GitLab是自建的內網平臺,千萬不要忘了在上述2個宿主機器上增加hosts解析,例如:
安裝一個tomcat ,其http端口為8082
下載jenkins的war包,并放到tomcat下 http://mirrors.jenkins-ci.org/war/
1)context.xml:增加jenkins環境變量,由tomcat掛載。
<Environment name="JENKINS_HOME" value="/u01/jenkins_home/" type="java.lang.String"/>
<Resources cachingAllowed="true" cacheMaxSize="200000"/>
“JENKINS_HOME”是jenkins的home目錄,通常設定為“磁盤空間較大”的分區,這個目錄中將放置maven build的文件,歷史部署記錄等等,所以將會消耗很大的存儲空間
“cacheMaxSize” 指定內存單位K ,如果報內存不夠時加
2)tomcat-users.xml:配置jenkins的用戶,此后用戶可以在jenkins的頁面上登錄和授權操作,對于jenkins的用戶授權,官方提供了很多方式,比如LDAP、基于數據庫等等。本實例基于tomcat user的方式,簡單易用
添加2個管理員用戶,其中admin可以對系統各項配置進行修改,manager可以管理項目、部署等。
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="admin-gui"/>
<user username="admin" password="xxx" roles="admin,manager-gui,manager-script,manager-jmx,manager-status"/>
<user username="deployer" password="xxx" roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>
3)將jenkins.war放置在webapps目錄下,我們此處希望jenkins作為ROOT項目加載,所以刪除原有的ROOT項目,并將jenkins.war重命名位ROOT.war,這樣在通過http訪問jenkins時,不需要加ContextPath了。
4)啟動jenkins tomcat:./startup.sh
5)訪問“http://192.168.1.194:8082”,然后使用admin用戶登錄(用戶密碼參見tomcat-users.xml)。
1.用戶權限配置
系統管理-->Configure Global Security
安全域: Jenkins專有數據庫
搜索策略:登陸用戶可以做任何事
2.mail 配置
系統管理-->系統配置-->Jenkins Location
填寫系統管理員地址
系統管理-->系統配置-->郵件通知
SMTP服務器 smtp.126.com
用戶默認郵件后綴 @126.com
使用SMTP認證
用戶名 system_mail_ul@126.com
密碼
3.jdk、git、maven配置
系統管理-->Global Tool Configuration
新增jdk、git、maven路徑
/usr/server/jdk1.7.0_80
/usr/server/apache-maven-3.5.0
4.Build與發布
我們接下來創建一個job,這個job將從GitLab上下載源碼到本地,然后使用Maven build和打包,并發布到tomcat上。這個過程正是我們常用的
Deploy to container plugin 這個插件,請首先安裝;它主要用來將“war”文件“deploy/redeploy”到web容器中,比如tomcat、jboss等。有了這個插件,我們可以在maven
build之后,立即將war發布到tomcat中,而不需要手動操作或者寫shell腳本來copy文件。
首先,我們需要準備一個tomcat,用來部署我們的web application,過程略。此tomcat的端口為8080,部署在master宿主機器上。
因為Deploy插件是通過外部(http)方式“deploy/redeploy”,所以需要在tomcat上進行用戶授權。編輯tomcat-users.xml,增加如下配置:
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="deployer" password="xxx" roles="manager,manager-gui,manager-script,manager-jmx,manager-status" />
增加一個“deployer”用戶,我們可以通過tomcat manager機制來部署war。參見稍后講解。
觸發器實際是不需要的。
下面是我測試的樣子
最后配置tomcat容器路徑,大功告成,注意
此處tomcatA8為管理用戶,需要具備manager-gui,manager-script,manager-jmx,manager-status權限,否則報錯
如使用nginx代理,則需要設置最大緩沖大小大于war包大小,否則報錯.
報錯信息可在構建任務中的Console Output 菜單下查看
想打包正ROOT.war,有兩種方法:
1.修改pom.xml文件中的 改成你想要的名字
2.上圖設置中 Context path : /ROOT
其中“WAR/EAR
files”選項指定war的位置,這個路徑是個相對路徑,相對于“/home/jenkins_home/workspace/{你的item名稱}”,本實例是一個maven多模塊項目,且每個module打包的名稱都為ROOT.war,這樣方便部署。
請管理員指定正確的路徑。
Containers中,我們使用了tomcat 7,輸入上文我們設定的用戶名和密碼,指定tomcat Url,需要注意,既然應用是基于http manager的方式deploy,那么此tomcat的webapps自帶的“manager”項目不能被刪除,同時tomcat還需要處于啟動狀態。(tomcat也可能以為死亡,所以建議在pre step中加上對tomcat狀態的判斷,如果tomcat死亡,先執行startup.sh)。
如果在部署時,報錯。請按照如下方式排查:
1)tomcat是否已經啟動。
2)tomcat-users.xml是否配置正確。
3)tomcat的版本和“Deploy plugin”中container指定的是否一致。
4)tomcat下是否已經有ROOT項目,如果有,請刪除,然后重啟tomcat,此后再使用jenkins發布,因為reploy時會檢測舊的ROOT和新的ROOT.war項目的版本相容性,如果不同,則會導致reploy失敗。
構建日志:
[JENKINS] Archiving /u01/jenkins_home/workspace/gkgp/web/pom.xml to com.tudou.gkgp/web/1.0-SNAPSHOT/web-1.0-SNAPSHOT.pom [JENKINS] Archiving /u01/jenkins_home/workspace/gkgp/web/target/gkgp.war to com.tudou.gkgp/web/1.0-SNAPSHOT/web-1.0-SNAPSHOT.war [gkgp] $ /bin/sh -xe /home/jenkins/apache-tomcat-8.0.36/temp/hudson7572047694542790795.sh channel stopped Deploying /u01/jenkins_home/workspace/gkgp/web/target/gkgp.war to container Tomcat 8.x Remote with context /gkgp [/u01/jenkins_home/workspace/gkgp/web/target/gkgp.war] is not deployed. Doing a fresh deployment. Deploying [/u01/jenkins_home/workspace/gkgp/web/target/gkgp.war]Finished: SUCCESS
---END---
other: profile
各屬性節點的值,用占位符"${屬性名}"占位,maven在compile/package時,會根據profile的環境自動替換這些占位符為實際屬性值。
默認情況下:
maven package
將采用默認激活的profile環境來打包,也可以手動指定環境,比如:
maven package -P dev
將自動打包成dev環境的部署包(注:參數P為大寫)
實現“自動構建、部署”web應用實現“自動構建、部署”web應用
看完上述內容,你們掌握如何搭建Jenkins + Git + Maven + tomcat + nexus集成環境的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。