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

 

完毕~~~~~~~~~~~~~~~~~~~~~~~~

 

posted @ 2018-08-17 16:20 小马哥的春天 阅读(...) 评论(...) 编辑 收藏