V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yang957862615
V2EX  ›  DevOps

请问怎么用 DevOps 管理多个模块的项目

  •  
  •   yang957862615 · 2021-01-16 11:20:22 +08:00 · 3283 次点击
    这是一个创建于 1168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一个 40 个模块的项目,使用 Jenkinsfile 发布时将模块名列到 parameters 的 choice 参数里,每次发布时手动选择需要发布的模块,但是我感觉这样太费力了。 所以我想问问大神们是怎么管理这种中型项目的,请大神们赐教,感谢感谢

    13 条回复    2021-01-17 10:39:05 +08:00
    ghwolf007
        1
    ghwolf007  
       2021-01-16 11:30:53 +08:00
    hantsy
        2
    hantsy  
       2021-01-16 11:50:38 +08:00
    @ghwolf007 Jenkins 的 Cloud 版本 CodeShip 有没有更新,以前看了一下,太难用,放弃了。

    好多年没有用 Jenkins 了,现在不喜欢自己建这些东西。

    基于 Cloud 的 CI/CD 方案多如牛毛。https://github.com/hantsy/spring-reactive-jwt-sample
    yang957862615
        3
    yang957862615  
    OP
       2021-01-16 12:21:06 +08:00
    @ghwolf007 感谢感谢,看了很久但是还是不懂怎么用共享库发布这种多模块项目,期待再赐教
    calmzhu
        4
    calmzhu  
       2021-01-16 13:24:30 +08:00 via Android
    这个需求跟 jenkins 关系不大。


    每次发发布时手动选择发布的模块?

    那么每次判断哪些模块要发布,对应的版本。这个判断的数据来源是哪里呢

    数据来源打通做过关联自动化触发就行了。

    如果每次发哪些没有个可靠的逻辑。那么做其他啥都没用
    ghwolf007
        5
    ghwolf007  
       2021-01-16 14:12:39 +08:00
    @yang957862615 先按照 4 楼说的梳理清楚发布逻辑,共享库可以帮助你更优雅的实现更复杂的逻辑。
    Mithril
        6
    Mithril  
       2021-01-16 14:28:24 +08:00   ❤️ 1
    本质上不要用 CI 系统做太多事,尤其是依赖管理这种。它不是拿来干这个的。用好你对应语言的依赖管理功能,然后通过 CI 生成配置文件或者环境变量写进去就好了。
    特别是 Jenkins 这种做的不太行的 CI,当年用 Jenkins 是没得选,现在产品这么多,真的不想再配这东西去了。配置管理,插件管理,头疼的不行。更别说那个码农审美的 UI 了,甚至连最基本的对齐都做不到。
    xuanbg
        7
    xuanbg  
       2021-01-16 16:08:00 +08:00
    拆项目,每个项目 1 个模块。
    rayduan
        8
    rayduan  
       2021-01-16 16:34:34 +08:00 via iPhone
    微服务化
    akira
        9
    akira  
       2021-01-16 17:45:42 +08:00
    @Mithril 推荐几个产品?
    yang957862615
        10
    yang957862615  
    OP
       2021-01-16 20:33:10 +08:00
    @calmzhu 感谢回复,我的想法是通过 webhook 传递一个参数来实现,但是一直没搜到相关资料,如果您有经验请赐教
    yoyos
        11
    yoyos  
       2021-01-16 20:45:34 +08:00
    前段时间做过一个类似的工作,gitlab webhook 回调,根据发生变更的文件所在的目录,判断出是哪些模块需要构建,然后执行对应的任务就行了。
    用了共享库实现,但是 jenkins 确实拉垮,调试非常不方便
    calmzhu
        12
    calmzhu  
       2021-01-16 22:56:14 +08:00
    @yang957862615

    这卡在哪了。
    jenkins 可以通过 http api 直接构建任务并把参数穿过来的。有写过轮子。可以参考下

    代理类
    https://paste.ubuntu.com/p/cPpPbnkt6k/
    配置类
    https://paste.ubuntu.com/p/Pk79x2v3Wp/
    测试类
    https://paste.ubuntu.com/p/MP8RpNG5PG/

    配置示例:
    jenkins:
    base: 'https://jenkins.devops.yiwenjin.cn'
    username: 'xxxxx'
    token: 'xxxxx'
    yang957862615
        13
    yang957862615  
    OP
       2021-01-17 10:39:05 +08:00
    @calmzhu 感谢感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2924 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:14 · PVG 22:14 · LAX 07:14 · JFK 10:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.