1
qinxi 2018-07-18 15:16:50 +08:00
如果你想增量传输的话 rsync 支持 jar 的增量同步 https://www.v2ex.com/t/442933
|
2
lfzyx 2018-07-18 15:22:52 +08:00
从来不用增量包,用增量包你回滚到某个版本不麻烦么
|
4
pelloz 2018-07-18 15:31:46 +08:00
增量不好管理,我认为正确的做法是将配置和代码分开。无配置的代码每次都全量替换,然后如果需要再同步配置。
|
5
privil 2018-07-18 15:32:59 +08:00
我现在是直接对 war 包用 rdiff 工具 做增量的,每次传输 war 包改动的部分,rdiff 工具是 rdiff-backup 里面带的工具
|
6
rockyou12 2018-07-18 15:34:37 +08:00
正确方法不应该是把你手动做的事自己写个 jenkins 的 lib 然后自动化(虽然暗坑不少……)?
https://jenkins.io/doc/book/pipeline/shared-libraries/ 我司反正现在线上项目都是 docker ……所以也不用考虑增量部署了…… |
8
dunhanson OP @pelloz 每次改动很小话那不是很麻烦,比如就修改了一些页面、加了一些图片、js、css 文件等等,根本不需要重启应用服务器
|
11
dunhanson OP 刚搜到一片文章比较支持全量部署这种方式
https://www.cnblogs.com/datang6777/p/7290137.html |
12
rockyou12 2018-07-18 17:16:12 +08:00 1
@dunhanson docker 的部署? docker 镜像会传到私有 docker 仓库,由于线上环境是基于 rancher 的 docker 集群,所以把镜像名和版本号填好,集群会自动拉取。
而且由于在故障的时候需要自动迁移服务,所以也不可能考虑什么增量上传了 docker 镜像本身也是分层结构的,所以基本上每次也只会拉新的 jar 包的量(但要对 jar 进行增量应该是不行,也许 google 的新项目 jib 可以做到) |
13
pelloz 2018-07-18 17:38:21 +08:00 1
@dunhanson 要完全规避这些问题的话,你应该将静态资源和你的应用代码分离,静态资源用 nginx 部署,tomcat 里面只负责后端接口。这是前后端分离的思路。
|
14
xiaoheshang 2018-07-18 18:15:05 +08:00
我们用的就是你说的每次都上传完整的 war 包,已经用了两年了,挺方便的。
|
15
luosuosile 2018-07-18 18:24:29 +08:00
@xiaoheshang 上传完整 war 包,老板不会跟你抱怨服务器流量贵吗?我老板用的亚马逊的,之前我也老直接丢 war 包。后来他总是有意无意提这月流量好贵。
|
16
privil 2018-07-18 18:40:14 +08:00 via Android
@luosuosile 大部分人都是带宽计费啊,你们的 war 包是有多大
|
17
ymj123 2018-07-18 18:40:48 +08:00 via Android
Jenkins 建任务的时候选 pipeline,可以自己写 groovy 调 shell 脚本调 python 脚本。感觉应该能满足你的需求?
|
18
xiaoheshang 2018-07-18 19:44:35 +08:00
@luosuosile 是啊,你们的 war 包很大嘛,公司用的带宽难道还有流量计费的?
|