1
anubu 2019-07-03 12:16:15 +08:00
个人经验:
1. 可以实现,基本流程都差不多,难点在于具体各个环节的调试落地; 2. 编译构建步骤是不可缺少的,无非是你选择在 jenkins 环境中出 war 包还是 Dockerfile 多阶段构建出 war 包,这取决于你的构建环境是什么,docker 镜像只是对 war 的一种封装。 3. 不清楚 rancher 是否可以自动拉取最新镜像,如果部署环境是 docker 的话可以参考 https://github.com/containrrr/watchtower 4. tomcat 作为基础镜像,出 war 包后直接 build 一个新的镜像即可。 |
2
avalon8 OP @anubu 我想着是用 jenkins 打成 war 包再把 war 包复制到 tomcat 中再打成镜像 push 到仓库
|
3
LicV587 2019-07-03 13:24:03 +08:00
@avalon8 为什么要这么复杂?直接 Springboot,内嵌 tomcat,jenkins 直接打 jar 包,在运行 docker build 一个镜像
|
4
Defned 2019-07-03 13:24:18 +08:00
刚刚在公司落地,我用了 drone
|
5
victorywangzhcn 2019-07-03 13:26:48 +08:00
个人经验 2:
1. 可以实现,不过 Merge 这需要看看开发流程以及回收 Master 权限 2. 我们以前的流程是 Git --> Jenkins --> Unit Test --> Deploy snapshot to Nexus --> Deploy Daily 3. 可以采用 Jenkins 的 Pipeline 完成这个流程 4. 这里有俩选择,一是基础镜像(基本不动)+ War 跑新的 Image,二是类似我们之前的方案,只有一个基础镜像,每次 CI 流程的时候打 snapshot 包,基础镜像里负责根据启动参数拉取对应的包并解压执行(这里也有助于统一运维),所以每次只需要重启,他就能自动拉包 |
6
wangking 2019-07-03 13:27:18 +08:00
可以实现,jenkins pipeline 一条龙的事,加上 k8s 就更容易了
|
7
MuscleOf2016 2019-07-03 13:33:27 +08:00
可以实现的,自动化中间的这些流程,可以先自己人工跑一遍,jenkins 最后作为一个自动工具将这些流程都串起来就可以了。人工能做都,基本自动工具都可以做。
|
8
MuscleOf2016 2019-07-03 13:33:51 +08:00
@MuscleOf2016 不过简单都直接 gitlab-runner 配流水线就好了嘛
|
9
lauix 2019-07-03 13:34:57 +08:00
已经运行了一个多月 也用 rancher 整体技术实现差不多。
|
11
luozic 2019-07-03 13:38:04 +08:00 via iPhone
数据库需要相应的同步工具,否则也就是应用的自动化部署。
|
12
wangxiaoaer 2019-07-03 13:53:40 +08:00
我也在关注这个东西,其实开发端 从 git 到 ci 到 jar/war/docker image 都没有问题。
我们纠结的是打包结果更新好之后如何推送到服务器,docker 的话可以直接 push,jar 或者 war 就不好弄,我们目前是搭建 ftp 上传,但是总感觉不太方便。 其次,更新包上传到云端后,服务器如何得知应用有更新,我们目前是做了个小应用,定时访问云端,然后下载、重启,同样感觉这个不是很方便。 有没有好的方案(成熟的)?对了,个别服务器是 windows 的。 |
13
avalon8 OP @wangxiaoaer 推送到服务器 jenkins 就可以做到啊,我们现在就可以实现在 jenkins 直接打包然后测试站点直接生效
|
14
akira 2019-07-03 14:07:11 +08:00
|
15
mikuazusa 2019-07-03 14:12:00 +08:00
jenkins 全部能轻松实现
|
16
KuroNekoFan 2019-07-03 14:34:31 +08:00
gitlab ci 也可以
|
17
br00k 2019-07-03 14:48:28 +08:00 2
Rancher 本身就有 Pipeline 了,应该可以满足楼主的要求。
|
19
wuhang89 2019-07-03 15:22:37 +08:00
我就是这么做的。
|
20
Takamine 2019-07-03 15:23:52 +08:00
话说国内好像用 Travis CI 的确实不多诶。
|
21
wangxiaoaer 2019-07-03 15:26:59 +08:00
@avalon8 #13 怎么推? jenkins 在本地,如何把构建好的包推到外网服务器?
|
22
thonatos 2019-07-03 16:46:53 +08:00
基于 Jenkins & Docker 的 workflow 应用比较多,基础设施用自建 Rancher 或者云服务商提供的容器服务区别不会很大,早年实现过测试过多套方案,有兴趣可以看看我专栏里的几篇文章( https://zhuanlan.zhihu.com/p/24296218 )。
k8s 生态日趋完善,多研究研究,蛮有意思,比如可以考虑一下 Knative。 |
23
anubu 2019-07-03 16:48:01 +08:00
制品推送没什么问题的,有各种各样的制品仓库,jenkins 也有各种插件支持,最原始的 ftp、ssh 都可以实现,我们的制品是 docker 镜像,所以就简单的 docker push。
部署更新我们也是在 jenkins 中完成的,根据不同的场景,显式的去执行一个部署操作,而不是推送制品后等待触发部署。可用的工具也很多,Windows 目标可以使用 powershell 远程操作,Linux 目标 SSH 脚本也不错,docker 主机或 k8s 集群都有远程 API 可以调用。 |
24
AlfredYoung 2019-07-03 17:04:06 +08:00
gitlab 自带就可以实现了
|
25
iehp 2019-07-03 17:34:15 +08:00
可以去掉 jenkins,直接 gitlab 的 gitlab-runner 都可以搞定了。
|
27
dafengchui 2019-07-23 04:42:17 +08:00
|