Jenkins回滾


一、目的

在Jenkins的應用中,根據構建的版本號(Build Version) 進行回滾代碼,實現思路為:

在中間服務器(Jenkisn服務器)中把項目打包之后,按照構建版本號備份包,在回滾的時候按照版本號去尋找相應的包,發送到目標服務器。

二、構建不可回滾項目

此次配置脫胎於之前的不可回滾項目,因此是在之前配置的基礎上進行改造的,不可回滾的項目詳細見:https://www.cnblogs.com/dyaqi/p/13153127.html, 同學們可以結合兩篇文章靈活配置,實現自己的目的。

三、改造為可回滾項目

1、General-添加參數

添加在構建時可進行選擇的參數和展示的字符參數。

2、構建環境

去掉勾選“Delete workspace before build starts”,不刪除。

3、構建-1

clean compile package -Dmaven.test.skip=true -Ptest

清除target目錄,編譯、打包項目;

-Dmaven.test.skip=true為不執行測試用例也不編譯測試用例類;

-Ptest為觸發配置文件。

此處詳細知識可見附1 。

4、構建-2

case $Status  in
  Deploy)
    echo "Status:$Status"
    path="${WORKSPACE}/bak/${BUILD_NUMBER}"      #創建每次要備份的目錄
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
    \cp -f ${WORKSPACE}/target/*.war $path        #將打包好的war包備份到相應目錄,覆蓋已存在的目標
    echo "Completing!"
    ;;
  Rollback)
      echo "Status:$Status"
      echo "Version:$Version"
      cd ${WORKSPACE}/bak/$Version            #進入備份目錄
      \cp -f *.war ${WORKSPACE}/target/       #將備份拷貝到程序打包目錄中,並覆蓋之前的war包
      ;;
  *)
  exit
      ;;
esac

執行完該段腳本后,會在Jenkins服務器中的WORKSPACE下創建bak目錄,用來存放備份文件,如圖:

5、構建-3

ReservedNum=5  #保留文件數
FileDir=${WORKSPACE}/bak/
date=$(date "+%Y%m%d-%H%M%S")
 
cd $FileDir   #進入備份目錄
FileNum=$(ls -l | grep '^d' | wc -l)   #當前有幾個文件夾,即幾個備份
 
while(( $FileNum > $ReservedNum))
do
    OldFile=$(ls -rt | head -1)         #獲取最舊的那個備份文件夾
    echo  $date "Delete File:"$OldFile
    rm -rf $FileDir/$OldFile
    let "FileNum--"
done

此段代碼為在每次構建的時候,檢查備份個數是否超過5個,假如超過5個,則清除老的備份,所以只能回滾5個版本以內的代碼。

6、構建后操作

只改變“Delete workspace when build is done”,去掉Success的勾選,是指成功(Success)構建之后的文件不刪除。

四、發布

回到項目主界面,點擊Build with Parameters

發布選擇Deploy--->開始構建,即可開始發布

回滾選擇Rollback--->輸入回滾版本---->開始構建,版本號從構建歷史中選擇一個輸入

附1

1.maven clean。

清理項目的target目錄

2.maven compile

編譯項目

3.maven test

編譯項目后,再執行Junit測試方法

4.maven package

編譯項目后,再執行Junit測試方法,再把項目打包到target目錄

5.maven install

編譯項目后,再執行Junit測試方法,再把項目打包到target目錄,再安裝到本地倉庫。


免責聲明!

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



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