jenkins 如何打增量包?

2018-07-18 15:05:04 +08:00
 dunhanson
公司项目准备用 Jenkins 部署项目。

但是目前的方案是用 jenkins 构建后,使用运维写的脚本,把 war 包上传到服务器然后解压,再把线上的配置覆盖一遍。
感觉这么操作有点繁琐,大家有没有增量部署的方式?

项目现在采用的是增量部署的方式,但是比较原始。是通过手动复制 git 日志中代码路径到 excel,然后通过遍写的小工具进行增量打包(工具根据代码路径从 tomcat 编译后的目录中提取需要的代码),生成增量压缩包,发给运维部署。

大家公司的项目是怎么部署的?

本人刚开始接触 jenkins,请大家多多指教。
7406 次点击
所在节点    程序员
20 条回复
qinxi
2018-07-18 15:16:50 +08:00
如果你想增量传输的话 rsync 支持 jar 的增量同步 https://www.v2ex.com/t/442933
lfzyx
2018-07-18 15:22:52 +08:00
从来不用增量包,用增量包你回滚到某个版本不麻烦么
privil
2018-07-18 15:27:16 +08:00
@lfzyx #2 你增量出来新包的时候保存旧包 不就行了么
pelloz
2018-07-18 15:31:46 +08:00
增量不好管理,我认为正确的做法是将配置和代码分开。无配置的代码每次都全量替换,然后如果需要再同步配置。
privil
2018-07-18 15:32:59 +08:00
我现在是直接对 war 包用 rdiff 工具 做增量的,每次传输 war 包改动的部分,rdiff 工具是 rdiff-backup 里面带的工具
rockyou12
2018-07-18 15:34:37 +08:00
正确方法不应该是把你手动做的事自己写个 jenkins 的 lib 然后自动化(虽然暗坑不少……)?
https://jenkins.io/doc/book/pipeline/shared-libraries/

我司反正现在线上项目都是 docker ……所以也不用考虑增量部署了……
privil
2018-07-18 15:38:41 +08:00
@rockyou12 #6 代码不放线上放本地,本地编译好,传输到线上……这就是增量的痛点啊。
dunhanson
2018-07-18 15:44:28 +08:00
@pelloz 每次改动很小话那不是很麻烦,比如就修改了一些页面、加了一些图片、js、css 文件等等,根本不需要重启应用服务器
dunhanson
2018-07-18 15:45:35 +08:00
@rockyou12 具体咋操作?每次把生成的项目镜像上传到线上部署?
dunhanson
2018-07-18 15:46:12 +08:00
@privil 是一个可行的思路
dunhanson
2018-07-18 16:14:45 +08:00
刚搜到一片文章比较支持全量部署这种方式
https://www.cnblogs.com/datang6777/p/7290137.html
rockyou12
2018-07-18 17:16:12 +08:00
@dunhanson docker 的部署? docker 镜像会传到私有 docker 仓库,由于线上环境是基于 rancher 的 docker 集群,所以把镜像名和版本号填好,集群会自动拉取。

而且由于在故障的时候需要自动迁移服务,所以也不可能考虑什么增量上传了

docker 镜像本身也是分层结构的,所以基本上每次也只会拉新的 jar 包的量(但要对 jar 进行增量应该是不行,也许 google 的新项目 jib 可以做到)
pelloz
2018-07-18 17:38:21 +08:00
@dunhanson 要完全规避这些问题的话,你应该将静态资源和你的应用代码分离,静态资源用 nginx 部署,tomcat 里面只负责后端接口。这是前后端分离的思路。
xiaoheshang
2018-07-18 18:15:05 +08:00
我们用的就是你说的每次都上传完整的 war 包,已经用了两年了,挺方便的。
luosuosile
2018-07-18 18:24:29 +08:00
@xiaoheshang 上传完整 war 包,老板不会跟你抱怨服务器流量贵吗?我老板用的亚马逊的,之前我也老直接丢 war 包。后来他总是有意无意提这月流量好贵。
privil
2018-07-18 18:40:14 +08:00
@luosuosile 大部分人都是带宽计费啊,你们的 war 包是有多大
ymj123
2018-07-18 18:40:48 +08:00
Jenkins 建任务的时候选 pipeline,可以自己写 groovy 调 shell 脚本调 python 脚本。感觉应该能满足你的需求?
xiaoheshang
2018-07-18 19:44:35 +08:00
@luosuosile 是啊,你们的 war 包很大嘛,公司用的带宽难道还有流量计费的?
dunhanson
2018-07-19 09:39:08 +08:00
@rockyou12 十分感谢
dunhanson
2018-07-19 09:40:17 +08:00
@ymj123 回头研究下的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX