jenkin如何實現web版本控制&回退

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

 

完畢~~~~~~~~~~~~~~~~~~~~~~~~

相關文章
相關標籤/搜索