jenkins自己做爲一款運維利器,具有web
1. 持續集成 (Continuous integration)
2. 持續交付(Continuous delivery)
3. 持續部署(continuous deployment)
的強大能力, 對於生產的版本部署, 有時候會遇到新發的版本出現嚴重BUG等問題, 急需進行版本回退,爲了解決這種應急問題, 特意介紹下如何使用jenkins作web版本控制,在不一樣版本之間能夠快速切換。shell
1. jenkins的「構建」tab中增長構建步驟: Execute shellapache
shell腳本講解:tomcat
# 設置部署的項目名稱 PROJECT_NAME="optimus-mobile" # 清理掉上次部署遺留下的項目壓縮包 rm -rfv /data/work/.jenkins/jobs/${JOB_NAME}/workspace/*.tar.gz; # 切換到jenkins部署後打包tar.gz存放的目錄空間 cd /data/work/.jenkins/jobs/${JOB_NAME}/workspace; # 重點!! 建立版本文件 命名規則: rev. + 項目名 touch rev.${PROJECT_NAME} # 把job的構建編碼做爲版本號存放到rev文件中(對於SVN代碼管理的,可使用SVN的提交ID做爲版本號) echo $BUILD_NUMBER > rev.${PROJECT_NAME} # 對workspace空間中的全部文件打包成tar.gz tar zcvf ${JOB_NAME}.tar.gz *;
2. jenkins的「構建後操做」tab中增長構建步驟: Send build artifacts over SSH (經過SSH通道發送構建好的文件)bash
在Exec command框中插入以下腳本:服務器
#定義當前最新版本的tomcat目錄(裏面是apache tomcat解壓文件)運維
PROJECT_DEPLOY_HOME="/data/work/optimus-mobile"測試
# 定義版本的存放目錄(裏面存儲了該項目的全部的版本)
PROJECT_RELEASE_HOME="/data/work/release/optimus-mobile"ui
#定義項目名稱
PROJECT_NAME="optimus-mobile"編碼
#定義版本號所在的文件名稱
PROJECT_CHECKOUT_REV_FILE="rev.${PROJECT_NAME}"
#定義最新的版本存放的文件夾上級目錄(tomcat中docs是配置指向這裏)
PROJECT_WEB_HOME="/data/work/web"
# 設置CATALINA_BASE(用於後面的tomcat啓動)
CATALINA_BASE="/data/work/optimus-mobile"
#定義當前構建的版本文件所在的文件夾
WORK_FOLD="/data/work/jenkins-deployer-upload/${JOB_NAME}/${BUILD_ID}/"
#進入當前構建的版本文件夾
cd ${WORK_FOLD}
#解壓tar
tar zxvf *.tar.gz
#刪除tar
rm *.tar.gz
#獲取版本號存儲文件中存儲的版本號值
REV=`cat ${WORK_FOLD}/${PROJECT_CHECKOUT_REV_FILE}`
#定義新版本的文件夾名稱(帶上.版本號)
REV_PROJECT="${PROJECT_NAME}.${REV}"
#刪除同版本號的文件夾(若是有)
rm -rf "${PROJECT_RELEASE_HOME}/${REV_PROJECT}"
#新建新版本對應的文件夾
mkdir "${PROJECT_RELEASE_HOME}/${REV_PROJECT}"
#把tar解壓後的文件所有移動到新建的版本文件夾
mv * "${PROJECT_RELEASE_HOME}/${REV_PROJECT}"
#進入tomcat中當前指向的文件夾目錄的上級
cd ${PROJECT_WEB_HOME}
# 刪除該目錄(這是個軟連接)
rm ${PROJECT_NAME}
# 從新建立軟連接, 指向最新的版本號
ln -s "${PROJECT_RELEASE_HOME}/${REV_PROJECT}" ${PROJECT_NAME}
# 關閉tomcat
sh ${CATALINA_BASE}/bin/shutdown.sh -force;
sleep 10;
# 刪除tomcat中的日誌
rm -f ${CATALINA_BASE}/logs/*;
#重啓tomcat
sh ${CATALINA_BASE}/bin/startup.sh
3. 配置完畢後,保存jenkins, 當即構建實例
藍色球表示構建成功, BUILD_ID= 27
4. 此時文件已經上傳生產服務器.
看下 /data/work/release/optimus-mobile目錄下的文件:
看到裏面存了兩個版本。
5. 查看最新版本文件夾
cd /data/work/web/
ll
看到當前optimus-mobile軟連接指向了BUILD_ID=27的版本文件夾, 這個版本是最新的
6. 查看tomcat的conf/server.xml文件配置:
可見tomcat的部署目錄指向的是
/data/work/web/optimus-mobile
路徑, /data/work/web/optimus-mobile 路徑真實是軟連接指向最新的
/data/work/release/optimus-mobile/optimus-mobile.27
7. 若是27版本剛發完生產,測試發現問題,須要立刻回退,回退方法只須要修改軟連接指向:
# 進入optimus-mobile正式版本目錄文件夾上級 cd /data/work/web/ # 刪除軟連接 rm optimus-mobile # 新建軟連接,指向上一個版本號25 ln -s /data/work/release/optimus-mobile/optimus-mobile.25 optimus-mobile
完畢~~~~~~~~~~~~~~~~~~~~~~~~