请教 jenkins 发布流程的问题

2020-05-12 10:02:57 +08:00
 rqxiao

现在机器 a 上装了 jenkins 其中配置了节点 机器 b 的信息,想要在机器 b 上发布项目

1.git 上拉取代码 2.打包

最后在 b 上启动

1 和 2 这两部是在 a 还是 b 上完成的额

3934 次点击
所在节点    程序员
33 条回复
qingjiaowochangd
2020-05-12 10:04:50 +08:00
应该是 B
chenuu
2020-05-12 10:04:52 +08:00
在 A 上完成的
yjxjn
2020-05-12 10:06:28 +08:00
A 啊。。。肯定不是 B,B 负责拉 war 包就行。或者手动给 copy 过去。
also24
2020-05-12 10:07:19 +08:00
1,2 在 A 上完成,此谓 CI


打包后的东西:
从 A 上传输到 B 上;
或者从 A 上传输到制品库,再使用 B 从制品库拉取。
最后在 B 上启动。
此谓 CD
e1o
2020-05-12 10:07:56 +08:00
公司目前都是在 A 上面做这些操作
hiwangzheng
2020-05-12 10:08:55 +08:00
B 上完成的,A 的工作就是任务发布,然后把执行脚本同步给 B,然后 B 去执行脚本,拉代码和打包。
LUAgam
2020-05-12 10:09:14 +08:00
a 啊,jenkins 有 git 、maven 插件支持 pull 、打包、编译等
monsterxx03
2020-05-12 10:11:22 +08:00
A 啊, B 上还有线上程序跑着, 编译打包很容易跑满 CPU 的.
xylophone21
2020-05-12 10:22:16 +08:00
看起来关键分歧在如何理解“配置了节点 机器 b 的信息”,如果这里指的是 jenkins 的 slave 节点,那么在 B 上运行 1 和 2.
但后面提到只是在 B 上运行,那边 B 就仅仅是部署机,1 和 2 在 A 上运行。
所有关键是,“配置了节点 机器 b 的信息”具体指什么
x66
2020-05-12 10:23:20 +08:00
用 B 的怕不是来搞笑的吧,如果有很多 B,那不是每台服务器都要编译打包一次,浪费资源不说,怎么保证打包出来的程序不受系统环境的影响
defunct9
2020-05-12 10:52:56 +08:00
A.
nicevar
2020-05-12 10:57:06 +08:00
需要打包的肯定在 A 上处理, A 上拉取代码 /编译打包, 然后部署到 B
CRUD
2020-05-12 11:00:48 +08:00
9 楼+1,如果 B 是 jenkins 从属节点则在 B 上执行整个部署流程。

如果 B 只是普通服务器节点,则整个代码拉取打包的过程均在 jenkins 节点也就是 A 节点上完成,打包完成后在将包 push 到 B 节点运行。
d0m2o08
2020-05-12 11:01:31 +08:00
A 只是作为一个 master 用于发布任务,具体的任务需要 B 也就是 slaver 去执行

这样不会对 master 造成压力
egglin
2020-05-12 11:41:14 +08:00
涨知识了
xuanbg
2020-05-12 11:45:42 +08:00
正常的操作逻辑:在 A 上面打包成 jar 或者 war,然后上传到 B 发布。

你非要通过 A 控制 B 去 pull 源代码打包发布也不是做不到,但会比较麻烦就是了。
wucao219101
2020-05-12 11:46:57 +08:00
在 A 上完成 git 代码更新和编译打包,再把包部署到 B 。
B 是生产环境机器,一般不会去做编译打包,也不用安装 git 命令和 Maven 。
calmzhu
2020-05-12 11:50:57 +08:00
jenkins 调度可以指定节点的。默认应该是 master 或者随机
basefas
2020-05-12 11:58:20 +08:00
首先不能在 B 上执行,打包过程可能会占用过多资源,会影响 B 上的服务。
实际上应该有个打包机 C,CPU 和磁盘性能最好好些,然后所有项目的打包任务都调度到 C 上。
A 只负责调度,将对应任务调度到 C 上打包,打包完后再由 A 调度部署在 B 上。
legiorange
2020-05-12 14:30:04 +08:00
现在机器 a 上装了 jenkins 其中配置了节点 机器 b 的信息,想要在机器 b 上发布项目

1. A 机器通过 webhook 到 git 上拉取代码

2.通过 pipeline 或者配置好的命令来通过 Maven 、Ant 、Gradle 打包

此时 jekins 已经完成 CI 的持续集成。

3.通过配置 B 节点通过 docker 、k8s 等实现容器构建部署,相当于把 A 构建好的包下载到 jvm 容器内运行。

另我不同意打包机的观点,大部分情况是节点 A 机器已经基本够用,不够就扩展,又不是做 devsecops

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

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

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

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

© 2021 V2EX