Java SpringCloud 项目 CI/CD 问题请教

66 天前
 louisxxx
以前做 PHP Laravel 项目, 因为项目代码都在一个仓库里面,当合并请求审批后可自动触发 Bitbucket pipelines CI/CD 非常方便且简单。

现在 SpringCloud 项目里一堆依赖 CI/CD 时有构建顺序与依赖问题,请教下你们都怎么管理?

例如 SpringCloud 项目有这些模块并且放在不同的仓库
access - 审计模块
auth - 登陆模块
gateway - 网关权限管理
message - 通知发送
parent - 公共模块
product - 产品模块
common - 基础公共模块
system - 系统模块

如果用 Bitbucket pipelines CI/CD 没办法管理依赖和构建顺序。
目前我们有单独写一个脚本来调用 Bitbucket API 并安依赖顺序去执行 pipelines CI/CD ,但是非常的不方便,不像 PHP 那样丝滑,合并请求审核完自动 CI/CD 。-- 如果把这个项目放到单独的仓库中用 pipeline 执行又涉及到跨多个仓库拉代码,且无法自动得知什么时候需要启动构建。
920 次点击
所在节点    问与答
10 条回复
yuanmomo
66 天前
看了一下,好像整个是一个项目,然后分了很多模块,然后不同的模块一个仓库,这样就要处理模块之间的依赖问题,其次就是修改其中一个字模块,又需要触发整个项目的编译?
louisxxx
66 天前
@yuanmomo 是的,正常修改一个模块是要触发整体构。
securityCoding
66 天前
没懂,运行时模块依赖不是有 maven 或者 gradle 吗?为什么要手动处理
Sigrdirfa
66 天前
不用 maven ?
wxw752
66 天前
我经历过的都是手动去 jenkins 里点一下构建,因为启动比较耗时,每个微服务多服务器部署要做滚动发布,没有见过哪个项目推代码自动构建的。
qinxi
66 天前
jenkins 可以选择项目依赖. 选上其他项目就好了
rsyjjsn
66 天前
你有 ABCD 项目,在 Jenkins 的 A 里面构建完成依赖 BCD ,同理 B 里面依赖 ACD ,这样任意一个项目触发完成后,都会触发剩余的三个项目
Seulgi
66 天前
你所谓的模块是在一个项目里吗?如果在一个项目里,触发项目的 maven 编译子项目就会全部编译。如果你是不同的项目,那你们需要搭建一个 maven 私服,不同模块的项目写完触发 ci cd 也更新 maven 私服版本,其他模块相互引用用 maven 私服拉依赖。
wu00
66 天前
干过类似的事情,多个项目同一个仓库;
测试环境每次 merge request 自动触发构建部署,但是又想把构建时间控制在 2 分钟,而不是每次构建所有项目;
所以做了以下事情:
- bash 脚本中提前定义好项目直接的依赖和项目根目录路径
- 触发构建时,git diff 遍历哪些项目有代码变更需要构建
- 查找需要构建项目的依赖项目,加入到构建列表
halov
65 天前
可以使用 jenkins pipeline 来保证构建执行顺序

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

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

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

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

© 2021 V2EX