作者:chu.qingqing[ZSK]
軟件測試歷史模式
軟件測試集成工具jenkins
針對這種情況,持續集成工具jenkins被引入到測試工作中,協助測試人員進行“自動化部署、啟動”。
Jenkins,基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。
當開發人員完成一個階段性的研發工作或修復完一個周期的bug后,所有代碼均已提交到svn,測試人員只需要登入jenkins,對已創建好的工程(工程如何創建會在下面進行描述)進行構建,jenkins會自動將svn最新代碼進行檢出、編譯並打包,部署到遠程服務器啟動,測試人員不需要進行任何其他操作,jenkins構建全程有日志,當構建成功后,測試人員看到的就是最新的應用程序。
搭建上述持續集成環境可以把整個構建、部署過程自動化,很大程度上減輕測試人員工作量。
Jenkins的安裝教程網上可以搜索到,此處不再進行贅述。今天主要是結合具體項目來講解,如何通過jenkins實現其自動化部署及啟動。
Jenkins基礎環境配置
1)基礎插件配置:登錄jenkins,jenkins【系統管理】》【插件管理】,安裝Maven Integration plugin、Deploy to container Plugin
2)基礎參數配置:jenkins【系統管理】》【全局工具配置】,配置好jenkins所在服務器的maven和jdk路徑
3)修改maven全局配置:jenkins【系統管理】》【系統設置】,修改Maven項目配置
全局MAVEN_OPTS:-Xms128m -Xmx512m
Local Maven Repository :Local to the executor
全局MAVEN_OPTS:-Xms128m -Xmx512mLocal Maven Repository :Local to the executor
Jenkins構建項目
1) 新建項目:構建一個自由風格的軟件項目
2) 配置源碼路徑並添加權限用戶,源碼路徑及依賴包需要按照次序進行添加
Local module directory:這是讓你自己設置代碼存儲到本地工作區的自定義目錄
如果為“.”,則碼直接放在當前工作區目錄下;
如果自定義目錄,則會在工作區創建這個目錄結構,然后代碼存儲到這個目錄下
3) 添加構建腳本
export JAVA_HOME=/home/qingqing/jdk8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
cd $WORKSPACE
cd bdp-parent
MAVEN_BIN=/home/qingqing/maven3/bin
$MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
cd ../bdp-transfer
$MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
$WORKSPACE: Job的工作空間路徑,這里就是/home/qingqing/.jenkins/workspace/bdp-console

4) 先保存應用,到此構建該項目,代碼沒有問題的前提下,能夠編譯成功並打成war包,到這里只能算是自動化打包,那么自動化部署和啟動,還需要在打包完成后進行操作
Jenkins配置SSH
1) 保存完畢后,進入【系統管理】》【系統設置】,定位到Publish over SSH
Passphrase:全局的ssh密碼
SSH Servers : 遠程服務器信息設置區
Name:當前SSH Server的名稱(隨意取)
Hostname:遠程服務器ip地址
Username:遠程服務器的用戶名
Remote Directory :連接遠程服務器路徑(絕對路徑),也是在此路徑下執行shell命令,默認為/home/admin(根據每台服務器用戶名而改變)。
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”中輸入遠程服務器用戶名的密碼,比如該處輸入用戶名為“usieip”的密碼。使用“Test Configuration”進行校驗該配置是否通過,如下圖:
Jenkins通過shell腳本遠程啟動工程
1) 此時再次進入初始構建的項目,bdp-console中,找到“構建后操作”,點擊“增加構建后操作步驟”,選擇“Send build artifacts over SSH”
說明:此操作的目的,主要是將jenkins服務器上面打好的war包上傳到遠程服務器,並執行遠程服務器的腳本(腳本中會進行停止在運行進程、換包、替換配置文件、重啟工程)
(1)Source files:這是一個相對路徑,相對於該job的工作區的路徑(存放源碼的路徑);(2)Remove prefix :移除Source files中的前綴;
(2)Remote directory:遠程服務器的目標位置,相對路徑,相對於在“系統設置”中的“Publish over SSH”里的“SSH Server”設置里的“Remote Directory”的路徑。
(3)Exec command:此處寫在遠程服務器上執行的shell腳本
Start.sh腳本內容:
#tomcat路徑
TOMCAT_HOME=/home/usieip/bdp-console-8081
#查看進程並殺掉進程
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 bdp*
#拷貝新war包到Tomcat下
cd ../../war/
cp bdp-transfer-console-3.0.0.war $TOMCAT_HOME/webapps
mkdir bdp-transfer-console-3.0.0
cp bdp-transfer-console-3.0.0.war bdp-transfer-console-3.0.0/
cd bdp-transfer-console-3.0.0/
unzip bdp-transfer-console-3.0.0.war
cp /home/usieip/web_config/bdp.yml WEB-INF/classes/
#啟動tomcat
"$TOMCAT_HOME"/bin/startup.sh
Worker.sh腳本內容:
#tomcat路徑
TOMCAT1_HOME=/home/usieip/bdp-worker-8020
#查看進程並殺掉進程
ID=`ps -ef | grep "$TOMCAT1_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 $TOMCAT1_HOME/webapps
rm -rf bdp*
#拷貝新war包到Tomcat下
cd ../../war/
cp bdp-transfer-worker-3.0.0.war $TOMCAT1_HOME/webapps
cd $TOMCAT1_HOME/webapps
mkdir bdp-transfer-worker-3.0.0
cp bdp-transfer-worker-3.0.0.war bdp-transfer-worker-3.0.0/
cd bdp-transfer-worker-3.0.0
unzip bdp-transfer-worker-3.0.0.war
cp /home/usieip/worker_config/bdp.yml WEB-INF/classes/
#啟動tomcat
"$TOMCAT1_HOME"/bin/startup.sh
至此,一個基本的自動化部署工程已經創建完畢。jenkins中,直接對該工程進行構建,將對此工程進行編譯,打包、部署、啟動,瀏覽器直接輸入訪問地址就可以進行訪問,如果構建失敗,則需要查看構建日志,查看報錯,解決問題,最終迎來自動化的“春天”~(當然,如果您在使用jenkins構建過程中有任何疑問,也可以聯系我)