Java SpringCloud 项目 CI/CD 问题请教 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
louisxxx
V2EX    问与答

Java SpringCloud 项目 CI/CD 问题请教

  •  
  •   louisxxx 2024-03-05 05:05:50 +08:00 1535 次点击
    这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前做 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 执行又涉及到跨多个仓库拉代码,且无法自动得知什么时候需要启动构建。
    10 条回复    2024-03-06 10:08:23 +08:00
    yuanmomo
        1
    yuanmomo  
       2024-03-05 06:46:51 +08:00 via iPhone
    看了一下,好像整个是一个项目,然后分了很多模块,然后不同的模块一个仓库,这样就要处理模块之间的依赖问题,其次就是修改其中一个字模块,又需要触发整个项目的编译?
    louisxxx
        2
    louisxxx  
    OP
       2024-03-05 08:40:35 +08:00
    @yuanmomo 是的,正常修改一个模块是要触发整体构。
    securityCoding
        3
    securityCoding  
       2024-03-05 08:47:48 +08:00 via Android
    没懂,运行时模块依赖不是有 maven 或者 gradle 吗?为什么要手动处理
    Sigrdirfa
        4
    Sigrdirfa  
       2024-03-05 08:53:02 +08:00 via Android
    不用 maven ?
    rockddd
        5
    rockddd  
       2024-03-05 08:58:04 +08:00
    我经历过的都是手动去 jenkins 里点一下构建,因为启动比较耗时,每个微服务多服务器部署要做滚动发布,没有见过哪个项目推代码自动构建的。
    qinxi
        6
    qinxi  
       2024-03-05 09:12:48 +08:00
    jenkins 可以选择项目依赖. 选上其他项目就好了
    rsyjjsn
        7
    rsyjjsn  
       2024-03-05 09:21:20 +08:00
    你有 ABCD 项目,在 Jenkins 的 A 里面构建完成依赖 BCD ,同理 B 里面依赖 ACD ,这样任意一个项目触发完成后,都会触发剩余的三个项目
    Seulgi
        8
    Seulgi  
       2024-03-05 09:26:36 +08:00
    你所谓的模块是在一个项目里吗?如果在一个项目里,触发项目的 maven 编译子项目就会全部编译。如果你是不同的项目,那你们需要搭建一个 maven 私服,不同模块的项目写完触发 ci cd 也更新 maven 私服版本,其他模块相互引用用 maven 私服拉依赖。
    wu00
        9
    wu00  
       2024-03-05 09:51:50 +08:00
    干过类似的事情,多个项目同一个仓库;
    测试环境每次 merge request 自动触发构建部署,但是又想把构建时间控制在 2 分钟,而不是每次构建所有项目;
    所以做了以下事情:
    - bash 脚本中提前定义好项目直接的依赖和项目根目录路径
    - 触发构建时,git diff 遍历哪些项目有代码变更需要构建
    - 查找需要构建项目的依赖项目,加入到构建列表
    halov
        10
    halov  
       2024-03-06 10:08:23 +08:00
    可以使用 jenkins pipeline 来保证构建执行顺序
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5729 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 01:54 PVG 09:54 LAX 17:54 JFK 20:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86