溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境

發(fā)布時間:2021-11-05 17:38:59 來源:億速云 閱讀:173 作者:柒染 欄目:建站服務(wù)器

如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

實現(xiàn)“自動構(gòu)建、部署”web應(yīng)用

1、安裝環(huán)境

    操作系統(tǒng):Centos 7.2

    JDK:1.8.x

    Maven:3.5.x

    Git: 1.8.1,自建GitLab平臺

    tomcat:8.x
2.第三方安裝安裝和環(huán)境配置
增加hosts解析
JDK、Git、Maven、tomcat在上述2個宿主機器上都需要安裝,即jenkins master和slave都需要這些環(huán)境。

    1)JDK安裝:略;安裝后之后,請注意配置JAVA_HOME環(huán)境變量。

    2)Maven安裝:從apache下載tar.gz壓縮包,在合適的目錄下解壓即可。此后配置M2_HOME環(huán)境變量。
                              如果使用私服的Maven中央倉庫 nexus,要指定 /usr/server/apache-maven-3.5.0/conf/settings.xml

    3)tomcat安裝:略。

    4)Git:安裝非常簡單,直接執(zhí)行“yum install git”即可。

    5)如果你的GitLab是自建的內(nèi)網(wǎng)平臺,千萬不要忘了在上述2個宿主機器上增加hosts解析,例如:

安裝一個tomcat ,其http端口為8082
下載jenkins的war包,并放到tomcat下 http://mirrors.jenkins-ci.org/war/

1)context.xml:增加jenkins環(huán)境變量,由tomcat掛載。

  1. <Environment name="JENKINS_HOME" value="/u01/jenkins_home/" type="java.lang.String"/>


  2. <Resources    cachingAllowed="true" cacheMaxSize="200000"/>

“JENKINS_HOME”是jenkins的home目錄,通常設(shè)定為“磁盤空間較大”的分區(qū),這個目錄中將放置maven build的文件,歷史部署記錄等等,所以將會消耗很大的存儲空間
“cacheMaxSize” 指定內(nèi)存單位K ,如果報內(nèi)存不夠時加

2)tomcat-users.xml:配置jenkins的用戶,此后用戶可以在jenkins的頁面上登錄和授權(quán)操作,對于jenkins的用戶授權(quán),官方提供了很多方式,比如LDAP、基于數(shù)據(jù)庫等等。本實例基于tomcat user的方式,簡單易用
添加2個管理員用戶,其中admin可以對系統(tǒng)各項配置進行修改,manager可以管理項目、部署等。

  1. <role rolename="manager"/>

  2. <role rolename="admin"/>

  3. <role rolename="manager-gui"/>

  4. <role rolename="manager-script"/>

  5. <role rolename="manager-jmx"/>

  6. <role rolename="admin-gui"/>

  7. <user username="admin" password="xxx" roles="admin,manager-gui,manager-script,manager-jmx,manager-status"/>

  8. <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.用戶權(quán)限配置
系統(tǒng)管理-->Configure Global Security
安全域: Jenkins專有數(shù)據(jù)庫
搜索策略:登陸用戶可以做任何事
2.mail 配置
系統(tǒng)管理-->系統(tǒng)配置-->Jenkins Location
填寫系統(tǒng)管理員地址

系統(tǒng)管理-->系統(tǒng)配置-->郵件通知
SMTP服務(wù)器  smtp.126.com
用戶默認郵件后綴 @126.com
使用SMTP認證
用戶名 system_mail_ul@126.com
密碼

3.jdk、git、maven配置
系統(tǒng)管理-->Global Tool Configuration
新增jdk、git、maven路徑
/usr/server/jdk1.7.0_80
/usr/server/apache-maven-3.5.0

4.Build與發(fā)布
我們接下來創(chuàng)建一個job,這個job將從GitLab上下載源碼到本地,然后使用Maven build和打包,并發(fā)布到tomcat上。這個過程正是我們常用的
Deploy to container plugin 這個插件,請首先安裝;它主要用來將“war”文件“deploy/redeploy”到web容器中,比如tomcat、jboss等。有了這個插件,我們可以在maven build之后,立即將war發(fā)布到tomcat中,而不需要手動操作或者寫shell腳本來copy文件。

首先,我們需要準(zhǔn)備一個tomcat,用來部署我們的web application,過程略。此tomcat的端口為8080,部署在master宿主機器上。

因為Deploy插件是通過外部(http)方式“deploy/redeploy”,所以需要在tomcat上進行用戶授權(quán)。編輯tomcat-users.xml,增加如下配置:

  1.     <role rolename="manager"/>

  2.     <role rolename="admin"/>

  3.     <role rolename="manager-gui"/>

  4.     <role rolename="manager-script"/>

  5.     <user username="deployer" password="xxx" roles="manager,manager-gui,manager-script,manager-jmx,manager-status" />


增加一個“deployer”用戶,我們可以通過tomcat manager機制來部署war。參見稍后講解。

如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境





觸發(fā)器實際是不需要的。

如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境

如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境
如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境

下面是我測試的樣子

最后配置tomcat容器路徑,大功告成,注意

此處tomcatA8為管理用戶,需要具備manager-gui,manager-script,manager-jmx,manager-status權(quán)限,否則報錯

如使用nginx代理,則需要設(shè)置最大緩沖大小大于war包大小,否則報錯.

報錯信息可在構(gòu)建任務(wù)中的Console Output 菜單下查看


想打包正ROOT.war,有兩種方法:
1.修改pom.xml文件中的 改成你想要的名字
2.上圖設(shè)置中 Context path :   /ROOT

其中“WAR/EAR files”選項指定war的位置,這個路徑是個相對路徑,相對于“/home/jenkins_home/workspace/{你的item名稱}”,本實例是一個maven多模塊項目,且每個module打包的名稱都為ROOT.war,這樣方便部署。 請管理員指定正確的路徑。

    Containers中,我們使用了tomcat 7,輸入上文我們設(shè)定的用戶名和密碼,指定tomcat Url,需要注意,既然應(yīng)用是基于http manager的方式deploy,那么此tomcat的webapps自帶的“manager”項目不能被刪除,同時tomcat還需要處于啟動狀態(tài)。(tomcat也可能以為死亡,所以建議在pre step中加上對tomcat狀態(tài)的判斷,如果tomcat死亡,先執(zhí)行startup.sh)。

    如果在部署時,報錯。請按照如下方式排查:

    1)tomcat是否已經(jīng)啟動。

    2)tomcat-users.xml是否配置正確。

    3)tomcat的版本和“Deploy plugin”中container指定的是否一致。

    4)tomcat下是否已經(jīng)有ROOT項目,如果有,請刪除,然后重啟tomcat,此后再使用jenkins發(fā)布,因為reploy時會檢測舊的ROOT和新的ROOT.war項目的版本相容性,如果不同,則會導(dǎo)致reploy失敗。


 構(gòu)建日志:

[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

各屬性節(jié)點的值,用占位符"${屬性名}"占位,maven在compile/package時,會根據(jù)profile的環(huán)境自動替換這些占位符為實際屬性值。

默認情況下: 

maven package

將采用默認激活的profile環(huán)境來打包,也可以手動指定環(huán)境,比如:

maven package -P dev

將自動打包成dev環(huán)境的部署包(注:參數(shù)P為大寫)

實現(xiàn)“自動構(gòu)建、部署”web應(yīng)用實現(xiàn)“自動構(gòu)建、部署”web應(yīng)用

看完上述內(nèi)容,你們掌握如何搭建Jenkins + Git + Maven + tomcat + nexus集成環(huán)境的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI