jenkins+Gitlab+maven+tomcat實現自動集成、打包、部署


一、前言

首先出於提高自己技術水平和琢磨能做點什么能提高工作效率,上線工作實在無聊、重復(手動編譯、打包,傳包,重啟),於是就想到了jenkins,jenkins持續集成已經不是什么新鮮的話題,網上文章一大堆,俗話說天下文章一大抄,基本上就是那三五篇,相信要是以前沒接觸過的人沒有兩三天是弄不出來的,特別是身為運維崗,一些關於開發的東西還是不太懂,在搭建之前什么持續集成、持續構建、持續部署這些概念真是搞不懂,也許是我比較愚笨,在我研究的這段時間里,真是一步一個坑,想想這人品,寫這個的目的不為什么,希望后來者少踩坑,也為自己做個記錄。

二、環境

1、粘一副從網上看見的我認為好理解的圖

2、服務器環境

一台jenkins服務器:192.168.4.117

一台gitlab服務器:192.168.4.81

一台測試服務器:192.168.4.91

三、環境搭建

1、gitlab安裝:由於之前已經寫過gitlab安裝的博客,在此就不重復寫了,把地址粘出來:http://www.cnblogs.com/lidong94/p/7161717.html

2、jenkins安裝

(1)安裝可以用war包也可以用rpm包,但是個人認為還是war包好用方便,首先下載好jenkins的war包,地址:http://mirrors.jenkins.io/war-stable/2.32.3/

(2)安裝jdk,建議使用1.8以上的版本,安裝好jdk之后執行:vim /etc/profile  在這個文件最后加入如下代碼:

export JAVA_HOME=/usr/local/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

 (3)然后執行以下命令,這樣是使用默認的8080端口,也可以修改使用別的端口,當然這個war包也可以放到tomcat里啟動,這里就不介紹tomcat啟動的方式了。

java -jar jenkins.war

(4)到這里jenkins就安裝成功了,可以通過瀏覽器訪問:http://192.168.4.117:8080

四、jenkins配置

(1)第一次訪問時會出現這個頁面

cat標紅的那個路徑,把內容粘到文本框內,點擊continue,稍等一分鍾之后會進入以下頁面

點擊第一幅圖安裝插件。PS:這兩幅圖的區別就是一個是自定義安裝插件,一個自己選擇要安裝的插件,建議選擇第一個,后邊用到哪些在自己安裝

等待十分鍾左右插件安裝完成,插件安裝完成之后出現如下圖

創建jenkins的第一個用戶,然后點擊 save and finish

點擊開始使用jenkins

這就是jenkins的主界面,接下來開始jenkins之旅

五、jenkins界面配置

相信好多人到這一步之后就不明白該怎么做了,我曾經搭建過四五次到這里,但是每次新建項目的時候就懵懵懂懂的,稀里糊塗的建一個項目,然后就擱置了,還是那句話,做什么事情之前先想明白自己想要什么,好了,廢話不多說,我們的初衷就是要實現只要開發提交代碼到gitlab,jenkins就會自動檢測到並且自動進行構建(合並、打包),構建完成之后將打好的包(war、jar包都可以)通過jenkins的插件傳到tomcat的webapps目錄下,然后重啟tomcat,實現自動打包部署。

(1)首先我們需要配置jenkins的全局配置,包括(jdk、maven)

點擊系統管理-----global tool configuration

進去之后如下圖

maven配置默認即可,jdk配置別名隨便寫,java_home就是jdk的家目錄,不知道的話可以使用java -version查詢

git設置如上圖所示,接下來配置maven,安裝maven也可以在這里自動安裝也可以自己下載安裝,但是建議自己下載安裝,下載地址:wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz下載完成解壓即可不需要過多操作,然后使用mvn -v查看安裝是否成功及安裝信息,我的安裝信息如圖記住這個路徑,這個路徑需要在下圖的maven home 配置

 

 

 以上這些配置全都在global tool configuration里邊,配置完點擊保存

(2)接下來配置ssh連接信息,首先先安裝ssh插件:publish over ssh

點擊系統管理----管理插件

點擊進來之后如下圖,點擊可選插件,然后在過濾文本框處輸入publish over ssh ,把前面的復選框選中之后點擊直接安裝

 

 安裝完成后如下圖,勾選安裝完后重啟jenkins,這個插件就會生效,由於我這個插件已經安裝,這個圖只是一個示例

安裝完成后接下來配置ssh,也就是要上傳的測試服務器ssh信息

首先我們先要在jenkins服務器上生成秘鑰,然后利用秘鑰要進行免密登錄

在jenkins服務器上執行ssh-keygen -t rsa,一路回車就可以  一路回車的話密碼為空,這樣就在/root/.ssh/下生成的兩個文件id.rsa(私鑰)和id.rsa.pub(公鑰),我們需要把公鑰的內容寫到測試服務器(tomcat服務器上)的/root/.ssh/authorized_keys文件中  如果沒有就新建一個,接下來我們開始配置

點擊系統管理---系統設置

進去之后找到Publish over SSH項,如下圖

 

詳細解釋:Passphrase是指在生成秘鑰的時候設置的密碼,由於我們都是一路回車下來的所以此處不用寫

path to key是指私鑰的位置/root/.ssh/id.rsa

key是指私鑰的內容  path to key 和key任選其一即可

 name是指你要遠程到tomcat的名稱  隨便寫就可以,后期為了區分,所以我寫了測試服務器

hostname是指測試服務器的ip

username是指測試服務器的用戶

remote directory是指要放到測試服務器的目錄,這里寫tomcat的部署目錄

點第一張圖左下角的高級可以修改端口,點擊test  configuration可以測試連接  ,如下圖就是測試成功,說明我們現在已經可以使用jenkins連接服務器了

 

 (4)現在jenkins已經可以和遠程服務器通信了,但是還沒和gitlab連通,接下來我們配置gitlab和jenkins的連通,首先先安裝gitlab相關插件,關於插件安裝上面已經寫過

接下來我們新建一個job,因為只有先建了job才能和gitlab連通,如下圖,這里填寫一個名字如test,選擇構建一個自由風格的軟件項目,點擊ok

點擊完之后如下圖,描述這塊記得寫上,最開始這塊沒寫,在構建項目的時候會有報錯,報不能配置name[ ],這里寫上就好了,

然后點擊源碼管理如下圖,我們選擇git,repository url  寫gitlab倉庫的地址,credentials是指信任,我們需要在gitlab中添加jenkins的公鑰 ,在下圖的key中填寫jenkins服務器的公鑰,title處填寫jenkins,然后在到jenkins上就可以看到credentials處可以選擇jenkins了,然后點擊構建觸發器選項卡

 

點擊觸發器選項卡之后如下圖,我們點擊

點擊構建選項卡之后如下圖:maven version處選擇我們在global tool configuration處配置的maven名稱  goals處填寫maven命令,因為我們要打包,所以填寫clean package,不懂的可以去學一下maven命令,然后點擊構建后操作選項卡

點擊構建后選項卡之后如下圖,選擇send build artifacts over ssh  ,name處選擇我們配置的測試服務器,transfers這里特別需要注意,我在這邊卡了大半天,因為網上寫的文章含糊不清 source files 處填寫想要傳到遠程服務器的東西 ,可以是目錄、war包、jar包等都可以,這個路徑是相當於workspace的路徑  workspace目錄可以在/root/.jenkins/workspace/找到所以說這里不用寫/root/.jenkins/workspace/  因為我們構建完的war包或者jar包在/root/.jenkins/workspace/job名/target/下所以這里可以寫target/war包名.war或者**/*.war,

remove prefix是指當把war包傳到服務器的時候去掉source files處填寫的war包之前的路徑,要是不去除的話會在tomcat的webapps建一個target  target之下才是war包,這當然不是我們想要的

remove directory 是指遠程到服務器的目錄   這個在這就不配置了  因為我們在系統設置處已經配置  這邊直接調用就可以

exec command是指傳過去包之后執行的命令,這里也可以調用腳本,

 然后點擊保存就可以了這樣我們就建完了一個job,有的人可能會想起來還沒配置gitlab,good,還記得建job的時候要記住的那個url地址嗎,接下來我們需要在gitlab中找到web hooks這個選項,不同的gitlab   web hooks在不同的地方  ,我的是在下圖點擊integrations

點擊integrations后如下圖,需要把jenkins的url:http://192.168.4.117:8080/project/test填到此處,然后點擊添加web hooks,這個web hooks的作用就是jenkins檢測到gitlab有代碼提交就會觸發jenkins進行構建

到此,jenkins自動打包,上傳就配置完成了,接下來我們驗證一下,我提交代碼到gitlab一下,控制台輸出如下,

我們到測試服務器的webapps下驗證如下,jar包已經傳到tomcat下了

 

 -----------------------------------------------------------------------------------------------------------------End-------------------------------------------------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM