Jenkins+maven+Tomcat+SVN一鍵自動打包部署應用到服務器


今天請教了大神,終於把jenkins給搞明白了

現在做下筆記,防止自己老年痴呆又忘了怎么配置

(截圖可能不夠清晰,有不清楚的隨時評論打call)

機器配置:

安裝配置規划

機器

192.168.169.139(本機虛擬機)

192.168.169.140(本機虛擬機)

系統

Red Hat Enterprise Linux Server release 6.4 (Santiago)  

系統內核

2.6.32-358.el6.x86_64

安裝包

jenkins.war

路徑

Tar包路徑:/home/admin

192.168.169.140作為Jenkins的部署服務器

192.168.169.139作為遠程服務器,部署war到Tomcat容器

 

jenkins打包部署到遠程服務器,需要以下安裝包:
1)jenkins.war(服務器140上解壓執行)

2)apache-maven-3.5.3-bin.tar.gz(服務器140上面解壓部署)

3)jdk-8u161-linux-x64.tar.gz(二者均需配置jdk)

4)apache-tomcat-7.0.85.tar.gz(遠程服務器139上面解壓部署)

上述包提取地址:https://pan.baidu.com/s/1YoEAw34CI0HjTgDyveN43g

提    取   密   碼: 5itt       

 

正式進入jenkins安裝環節:

1、139、140服務器均新建admin用戶並設置密碼

useradd admin

passwd admin

輸入密碼並再次確認即可

 

2、上傳jdk-8u161-linux-x64.tar.gz到兩台服務器下的admin用戶,

配置局部環境變量.bash_profile並使之生效

參考(局部jdk配置):

http://www.cnblogs.com/qingqing74647464/p/8617212.html

 

3、上傳apache-maven-3.5.3-bin.tar.gz到140服務器進行安裝解壓

解壓安裝maven參考:

http://www.cnblogs.com/qingqing74647464/p/8796870.html

 

4、上傳apache-tomcat-7.0.85.tar.gz到遠程服務器139,直接解壓修改bin目錄下的catalina.sh文件,

添加jdk的安裝路徑等信息

執行:

1) tar -zxvf apache-tomcat-7.0.85.tar.gz

2) rm -rf apache-tomcat-7.0.85.tar.gz

3) mv apache-tomcat-7.0.85/ tomcat7/

4) cd tomcat7/bin

5) vi catalina.sh

添加如下內容並保存:

export JAVA_HOME=/home/admin/jdk1.8(自行修改成自己的)
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

 

5、上傳jenkins.war到140服務器(jdk和maven已經配置好並生效)

執行:java -jar jenkins.war --httpPort=8888 指定端口號,可自行修改

(需自定義jenkins訪問端口執行java -jar jenkins.war  --httpPort=8081 ,啟動jenkins,

其中httpPort就是訪問端口設置,否則可直接將war包放在Tomcat里面去跑,一樣的效果;

如果想后台一直運行,那么啟動命令為nohup java -jar jenkins.war --httpPort=8888 &

或者 java -jar jenkins.war --httpPort=8888 后執行bg,再Ctrl + z執行bg后,輸入exit也可以實現效果)

6、打開瀏覽器訪問鏈接http://ip地址:8888(鏈接中ip根據實際情況更改)

 

7、進入jenkins系統后出現下面界面,點擊下面圖片中紅框中的按鈕

 

 

8、點擊后出現如下頁面:

 

9、等待安裝完畢,出現下面界面,設置用戶名和密碼: 

10、點擊Start using Jenkins按鈕后進入下面頁面,點擊“系統管理”:

11、“系統管理”出現下面頁面,點擊“管理插件”:

 

12、點擊“管理插件”后點擊“可選插件”出現先下面頁面,

13、在過濾位置搜索“maven”,選擇“Maven Integration plugin”,點擊“直接安裝”按鈕:

 

14、安裝需要等待一段時間,出現下面頁面代表安裝成功,點擊“返回首頁”:

15、在“系統管理”-“管理插件”-“可選插件”下,在過濾中搜索“deploy”,選擇“Deploy to container Plugin”

和“WebSphere Deployer  Plugin”,點擊“直接安裝”

 

 

16、等待一段時間,顯示完成代表安裝成功

17、“系統配置”頁面,點擊“Global Tool Configuration”

18、在Global Tool Configuration配置mavenjdk

 

解釋下面三張圖的參數輸入:
Maven Configuration
Default settings provider:
File path:/home/admin/maven3.5.3/conf/settings.xml(maven的setting.xml文件路徑)
Default global settings provider:
File path:/home/admin/maven3.5.3/conf/settings.xml(maven的setting.xml文件路徑)
 
JDK
別名:隨便取
JAVA_HOME:服務器上面配置的JAVA_HOME
 
MAVEN
name:隨便取
MAVEN_HOME:服務器上面配置的MAVEN_HOME
 

 

 

19、新增JDK

20、新增Maven

21、配置完成后點擊Save”保存

 

22、點擊“系統管理”-> “系統設置”

23、更改Maven項目配置

全局MAVEN_OPTS:-Xms128m -Xmx512m

Local Maven Repository 選擇Local to the executor

 

 

創建項目

1、 登錄

2、 點擊登錄進入Jenkins主界面

3、  Jenkins主界面點擊右邊“新建”

4、 在出現下面的界面中,創建一個新的Job

1)“Enter an item name: 輸入新建一個Job的名稱。

2)選擇“構建一個自由風格的軟件項目”,點擊OK即可創建一個新的Job,如圖

 

 5、找到“源碼管理”,選擇“Subversion”,如下圖:

6、Repository URL 設置你的代碼的svn地址,控制好訪問到哪一個文件夾,然后點擊Add

下拉按鈕,選擇點擊“Jenkins”:

 

在打開的頁面中選擇連接repository路徑的密鑰,具體方式在“Kind”中選擇(默認選擇使用

username with password即使用用戶名和密碼方式):

 

填寫完密鑰后點擊Add”按鈕保存,在“Credentials”標簽右邊的下拉菜單中選擇對應的密鑰:

Local module directory:這是讓你自己設置代碼存儲到本地工作區的自定義目錄,如果不寫,則代

碼直接放在當前工作區目錄下;如果自定義目錄,則會在工作區創建這個目錄結構,然后代碼存儲

到這個目錄下。例如:

1) jenkins的工作空間為默認路徑時“Local module directory”默認值為”.”,如下圖,

代碼將保存到Jenkins工作目錄下的名稱為Job名稱的文件夾中,舉例:

Jenkins工作目錄為/home/admin/.jenkins/workspace

Job名稱為:Test

那么保存的代碼位置也就是job的工作區路徑就為: /home/admin/.jenkins/workspace/Test

1) 自定義Local module directory時,如下圖,舉例說明:

Jenkins工作目錄為/home/admin/.jenkins/workspace

Job名稱為:Test

Local module directory:Helloworld

那么保存的代碼位置就為: /home/admin/.jenkins/workspace/Test/Helloworld

7、 找到“構建觸發器”,勾選“Poll SCM

“日程表”中填寫0 0 * * * :表示每天凌晨自動檢查一次,源碼改變了則自動下載構建。

H/5 * * * * : 表示每5分鍾自動檢查一次,源碼改變了則自動下載構建。

兩種方案如下圖所示:

 8、 找到“構建”,點擊“增加構建步驟”,選擇“Execute shell

選擇Execute shell”后會在頁面生成如下頁面:

 

command中填寫shell腳本來執行mvn操作.

舉例(紅色部分根據實際情況修改):

cd $WORKSPACE

cd Helloworld

MAVEN_BIN=/home/admin/maven3.5.3/bin

$MAVEN_BIN/mvn clean install -Dmaven.test.skip=true

 

注釋:

$WORKSPACE: Job的工作空間路徑,例如:

Jenkins的工作目錄時/home/admin/.jenkins/workspace

Job的名稱為Helloworld

那么,該Job下的$WORKSPACE為:/home/admin/.jenkins/workspace/Helloworld, $WORKSPACE會根據

Job名稱而改變,當Jobtest時,TT中的$WORKSPACE也就為/home/admin/.jenkins/workspace/test

MAVEN_BIN : mavenbin文件夾的絕對路徑

zkClient: pom.xml所在的文件夾,這個根據具體pom.xml文件的路徑來寫

-Dmaven.test.skip=true  這個是指不執行測試用例,也不編譯測試用例類

 9、點擊“保存”,即可保存該job

 

打包項目

1、Jenkins主界面,點擊每個Job的下拉按鈕,然后再點擊“立即構建”

 

2、任務構建狀態說明

  • 當前構建狀態分為以下幾種

 

 

 

項目構建完成,同時被認為是穩定的

 

項目構建完成,但被認定為不穩定

 

構建失敗

 

作業已經禁止

 

 

  • 構建穩定行,Jenkins會基於一些后處理器任務為構建發布一個穩健指數(從0-100 ),越高越穩定

 

 

構建成功率>80%

 

 

構建成功率60%-79%

 

 

構建成功率40%-59%

 

 

構建成功率20%-39%

 

 

構建成功率0-19%

期待任務編譯都處於和 狀態。

job遠程部署(自動部署)

進入系統管理》插件管理,下載SSH plugin”和 “Publish Over SSH”插件

1、配置SSH Server

點擊“系統管理”-“系統設置”,找到“Publish over SSH”

Passphrase:全局的ssh密碼

SSH Servers : 遠程服務器信息設置區

Name:當前SSH Server的名稱(隨意取)

Hostname:遠程服務器ip地址

Username:遠程服務器的用戶名

Remote Directory :連接遠程服務器路徑(絕對路徑),也是在此路徑下執行shell命令,

默認為/home/admin(根據每台服務器用戶名而改變)。

點擊“高級”,如上圖所示

勾選“Use password authentication, or use a different key”,在“Passphrase / Password”

中輸入遠程服務器用戶名的密碼,比如該處輸入用戶名為“admin”的密碼。

使用“Test Configuration”進行校驗該配置是否通過,如下圖:

當出現“Success”表示通過,也就是可以使用,使用“增加”,可以再創建一個連接遠程服務器的SSH Server。

2、jobs的配置中找到“構建后操作”,點擊“增加構建后操作步驟”,選擇“Send build artifacts over SSH

 

3、配置“Send build artifacts over SSH”

配置說明:

Name:選擇一個SSH Server(包含了遠程服務器的信息)

Source files:這是一個相對路徑,相對於該job的工作區的路徑(存放源碼的路徑),例如:

Source file 為“test/test/target/HelloWorld.war”,那么絕對路徑為:$WORKSPACE/test/test/target/HelloWorld.war,

此處的$WORKSPACE/home/admin/.jenkins/workspace/test

Remove prefix :移除Source files中的前綴,

例如 Source file為“test/test/target/HelloWorld.war”,如果Remove prefix為空,

jenkins就會在遠程服務器上目標位置創建test/test/target路徑,並在該路徑下存放war包;

如果Remove prefix為“test/test/target”jenkins只會講war包移動至遠程服務器的目標位置。

Remote directory:遠程服務器的目標位置,相對路徑,相對於在“系統設置”中的“Publish over SSH”里

的“SSH Server”設置里的“Remote Directory”的路徑。

例如“Publish over SSH”里的“SSH Server”設置里的“Remote Directory”的沒寫路徑就為默認路徑,

而此處的“Remote directory”為history,那么war包保存在遠程服務器路徑為/home/admin/history中

Exec command :此處寫在遠程服務器上執行的shell腳本

 

Exec command 腳本:

#jdk環境

export JAVA_HOME=/home/admin/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

#進入admin用戶主目錄

cd

#執行該文件
sh HelloWorld.sh

 

HelloWorld.sh文件內容

#tomcat路徑

TOMCAT_HOME=/home/admin/tomcat7

#查看進程並殺掉進程

ID=`ps -ef | grep "$TOMCAT_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "killed $id"
done

#刪除舊的war包等

cd $TOMCAT_HOME/webapps
rm -rf site-web*

#拷貝新war包到Tomcat下

cd ../../history/
cp HelloWorld.war $TOMCAT_HOME/webapps
cd ../tomcat7/bin

#啟動tomcat

nohup ./startup.sh

 

大功告成~~~~~~~~~~~~

 


免責聲明!

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



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