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

2021-01-16 11:20:22 +08:00
 yang957862615

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

3324 次点击
所在节点    DevOps
13 条回复
ghwolf007
2021-01-16 11:30:53 +08:00
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
2021-01-16 12:21:06 +08:00
@ghwolf007 感谢感谢,看了很久但是还是不懂怎么用共享库发布这种多模块项目,期待再赐教
calmzhu
2021-01-16 13:24:30 +08:00
这个需求跟 jenkins 关系不大。


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

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

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

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

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

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

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

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

© 2021 V2EX