jenkins版本回滚


两种场景:

一.生产发布回滚:

发布前先备份运行项目代码,回滚直接用备份的回滚,保证回滚准确性

jenkins配置

 

 脚本内容(这里只是单一推送项目目录,实际需要根据项目来,集群推送或者自动化部署)

case $Status  in
  	Deploy)
    echo "####本次操作为版本发布,版本号为$BUILD_NUMBER####"
	/bin/bash /data/sh/Deploy.sh
    ;;
    Rollback)
    echo "####本次操作为版本回滚,回滚版本号为$Versio####"
	/bin/bash /data/sh/Rollback.sh
    ;;
  *)
  exit
    ;;
esac
# vim Deploy.sh

#!/bin/bash
## 保留备份个数
BUILD_SAVE=5
BACKDIR=${JENKINS_HOME}/backdir/${JOB_NAME}
WEB_SERVER=slave1
WORK_DIR=/data/htdocs/wwwroot

mkdir -p $BACKDIR
cd $BACKDIR
rsync -av ${WEB_SERVER}:${WORK_DIR}/* Onlinebak_$(date +%Y%m%d%H%M)


cd $WORKSPACE
rsync -av * ${WEB_SERVER}:${WORK_DIR}


while true;
do
cd $BACKDIR
BAKFILES=$(ls -1tr|wc -l)
if [ $BAKFILES -gt "${BUILD_SAVE}" ];then
       ls -1tr |head -1|xargs rm -rf
else
        break;
fi
done

# cat Rollback.sh 

#!/bin/bash
BACKDIR=${JENKINS_HOME}/backdir/${JOB_NAME}
BACKFILE=$BACKDIR/$(ls -1t $BACKDIR|head -1)
WEB_SERVER=slave1
WORK_DIR=/data/htdocs/wwwroot

if [ -d $BACKFILE ];then
        cd $WORKSPACE
        rm -f ${WORKSPACE}/*
        rsync -av ${BACKFILE}/* ${WORKSPACE}/
        rsync -av * ${WEB_SERVER}:${WORK_DIR}
else
        echo "backdir not find"
        exit 1;
fi

发布页面:

 

场景二:

测试项目回滚,发布失败一般直接先回滚到上一个发布版本

jenkins配置

  脚本内容

# cat Deploy.sh 
#!/bin/bash
## 备份构建文件个数,等于jenkins丢弃废弃的构建->保留最大个数
BUILD_SAVE=5
BACKDIR=${JENKINS_HOME}/backdir/${JOB_NAME}
WORK_DIR=/data/htdocs/wwwroot

mkdir -p $BACKDIR

cd $WORKSPACE
## 备份当前发布版本代码,加入版本号,供回滚使用
tar -zcf  $BACKDIR/${JOB_NAME}.VER${BUILD_NUMBER}.tar.gz *
rsync -av * ${WORK_DIR}

while true;
do
cd $BACKDIR
BAKFILES=$(ls -1tr *.tar.gz|wc -l)
if [ $BAKFILES -gt "$BUILD_SAVE" ];then
       ls -1tr *.tar.gz|head -1|xargs rm -f
else
        break;
fi
done
# cat Rollback.sh 
#!/bin/bash
BACKDIR=${JENKINS_HOME}/backdir/${JOB_NAME}
## 根据jenkins版本号选择锁定回滚文件
BACKFILE=${BACKDIR}/${JOB_NAME}.VER${Version}.tar.gz
WORK_DIR=/data/htdocs/wwwroot

if [ -f $BACKFILE ];then
	cd $WORKSPACE
	rm -f ${WORKSPACE}/*
	rsync -av $BACKFILE $WORKSPACE/
	tar -zxf ${JOB_NAME}.VER${Version}.tar.gz
	rm -f ${JOB_NAME}.VER${Version}.tar.gz
	rsync -av * ${WORK_DIR}	
else
	echo "backfile not find"
	exit 1;
fi

发布页面


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM