jenkins --備份回滾


場景一:打標簽實現回滾

背景介紹:

本項目代碼存儲在gitlab,再通過jenkins發布到對應的節點上。
使用tag控制版本:每一次成功的構建,jenkins會自動為gitlab的分支打上tag,版本更新可直接選擇production分支,當需要回滾時選擇對應的tag進行構建。

jenkins主要配置

tag的參數化構建


Name: 此參數的變量名,可在之后配置以 $tags 形式引用;

Description: 描述信息,對此變量進行說明;
Parameter Type:抓取數據的類型,此處選擇分支或tag,因為需要使用分支develop,使用tag rollback;
Branch Filter: 需要保留的分支名稱,只對此處的分支進行展示,因為我們版本更新時只使用此分支。S
Tag Filter: 支持正則匹配,此處*為匹配所有;
Sort Mode: 排序方式;
Quick Filter: 勾選后,會在tag旁多一個可供filter的輸入框;
list size: tag展示框一次可展示的tag數量。

構建成功打tag


如上圖,勾選上僅在構建成功后打tag
Tag to push: 變量${BUILD_NUMBER}為系統自帶變量,是構建編號,第11次構建即為11
Target remote name:這個名稱在配置git拉代碼的地方添加

源代碼配置

由於以上配置,此處需要注意的是$tags變量與Target remote name的配置

效果展示

場景二:構建后生成壓縮包,解壓實現備份回滾

背景介紹

每個版本的代碼push到gitlab的master后,將通過jenkins編譯發布(build),並自動打包當前版本代碼。回滾時解壓對應版本壓縮包並發布。

jenkins主要配置


定義type變量:build / rollback
若rollback,則自行填寫rollback_number 變量

shell腳本

save_backnumber=5  #需要保留的備份包個數
PROJECT_NAME=${JOB_NAME#*_}

#先定義各種方法
function  backup   #新建該項目備份目錄,打包當前版本代碼
{
    if [ ! -d "/var/lib/jenkins/common/${JOB_NAME}" ]; then mkdir -p /var/lib/jenkins/common/${JOB_NAME};fi
    echo -e "\033[1;34m  backup tar  \033[0m"
    tar -zvcf /var/lib/jenkins/common/${JOB_NAME}/${PROJECT_NAME}_${BUILD_NUMBER}.tar.gz  -C ${WORKSPACE}/ .  --exclude=.git || exit 2
}

function  deleteoldtar  #保留設定個數的備份包,多余的都刪除
{
    backend_number=`find /var/lib/jenkins/common/${JOB_NAME}/ -name "*.tar.gz" |wc -l`
    delete_number=$((${backend_number}-${save_backnumber}))

    if [[ ${backend_number} > ${save_backnumber} ]]
    then
      echo -e "\033[1;34m  delete old tar  \033[0m"
      ls -lt /var/lib/jenkins/common/${JOB_NAME}/*|tail -n $delete_number|awk '{print $NF}'|xargs rm -rf {} || exit 2
    fi
}

function  rollback  #解壓需要回滾的備份包
{
    rollback_tarname=${PROJECT_NAME}_${rollback_number}.tar.gz
    echo -e "\033[1;34m  start rollback  ${rollback_tarname} \033[0m"
    tar -xvf /var/lib/jenkins/common/${JOB_NAME}/${rollback_tarname} -C ${WORKSPACE}/ || exit 2
}

case $type in
  Deploy)    #若type變量為Deploy,則執行backup、deleteoldta兩個方法
    backup
    deleteoldtar
    ;;
  RollBACK)
    rollback  #若type變量為RollBACK,則執行rollback方法
    ;;
  *)
    exit
    ;;
esac

構建的效果為


免責聲明!

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



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