Jenkins 增量部署相关解决方案

本贴最后更新于 2301 天前,其中的信息可能已经时过境迁

CI 自动化构建平台之核心代表:Jenkins

很多 Jenkins 玩家使用的是全量部署,跨服务器走内网环境。

但是笔者碰到的情况是跨服务器走外网的一个增量部署。

程序体积大概 70M,包括了 N 多的前端页面和图片。为了节省成本,三台服务器有两台的带宽只有 1M。而对外机有 100M。

实测增量部署,70M 的内容推送到 1M 带宽的机器人,一方面对带宽的占用比较大,另一方面推送过程耗费时间非常漫长。

在网上经过收集整理,并无相对成熟的解决方案。故此,笔者自己做了一个。(依赖推送插件:Publish Over SSH)

参数化构建方案

135_20171124091902png

添加增量打包脚本

135_20171124092256png
脚本内容如下:

job_path=${WORKSPACE}'/'
bak_path=${job_path}'bak/'
project_name='ezone'

if [ "${AllBuild}" = "true" ]
then
echo "全量部署"
rm -rf ${bak_path}*
fi

if [ ! -f "${job_path}Pack.jar" ]; then
wget -P ${job_path} http://code.taobao.org/svn/JenkinsPack/Pack/Pack.jar
fi

if [ ! -d ${bak_path} ]; then
mkdir ${bak_path}
fi
#增量打包
java -jar {job_path}Pack.jar {bak_path}/{project_name} {job_path}/target/{project_name} {job_path}/${project_name}.gzip
#删除旧版备份
rm -rf ${bak_path}/*
#进行新版备份
mv {job_path}target/{project_name} ${bak_path}
#清理编译日志
rm -rf ${job_path}/target/*

接着 Jenkin 配置,添加远程 SSH 执行插件
注:如果没有此选项,需去系统管理-插件管理,安装 Publish Over SSH

安装后在系统管理-系统配置最底部配置目标服务器连接信息

135_20171124092523png

编写远程部署脚本:

135_20171124092618png
代码如下:

project_path='/data/project/'
project_name='ezone'
tomcat_path='/data/ezone_tomcat'

if [ ! -f "${tomcat_path}/bin/UnPack.jar" ]; then
wget -P ${tomcat_path}/bin http://code.taobao.org/svn/JenkinsUnPack/UnPack/UnPack.jar
fi
#解压
java -jar {tomcat_path}/bin/UnPack.jar {project_path}/{project_name} {project_path}/${project_name}.gzip
#重启
sleep 3
cd ${tomcat_path}/bin
./shutdown.sh
sleep 10
#杀僵尸进程
./shutdown_kill.sh
./startup.sh

rm -rf {project_path}{project_name}.gzip

于是:

135_20171124092707png

这样就完成了这个增量部署相关操作

优点:轻量,部署速度快。

缺点:在某些增量部署失败的情况下需要通过全量部署来保持同步(或自己通过脚本去确定哪次部署的增量包)

关于增量部署的两个 jar 包源码:

增量打包相关:http://code.taobao.org/p/JenkinsPack/src/

增量解包相关:http://code.taobao.org/p/JenkinsUnPack/src/

By:Coody

  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖 • 1 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...