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


jenkins本身作為一款運維利器,具備

1. 持續集成 (Continuous integration) 
2. 持續交付(Continuous delivery) 
3. 持續部署(continuous deployment)

的強大能力, 對於生產的版本部署, 有時候會遇到新發的版本出現嚴重BUG等問題, 急需進行版本回退,為了解決這種應急問題, 特地介紹下如何使用jenkins做web版本控制,在不同版本之間可以快速切換。

1. jenkins的“構建”tab中增加構建步驟: Execute shell

shell腳本講解:

# 設置部署的項目名稱
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通道發送構建好的文件)

在Exec command框中插入如下腳本:

#定義當前最新版本的tomcat目錄(里面是apache tomcat解壓文件)

PROJECT_DEPLOY_HOME="/data/work/optimus-mobile"

# 定義版本的存放目錄(里面存儲了該項目的所有的版本)
PROJECT_RELEASE_HOME="/data/work/release/optimus-mobile"

#定義項目名稱
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

 

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

 


免責聲明!

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



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