现在有一个 40 个模块的项目,使用 Jenkinsfile 发布时将模块名列到 parameters 的 choice 参数里,每次发布时手动选择需要发布的模块,但是我感觉这样太费力了。 所以我想问问大神们是怎么管理这种中型项目的,请大神们赐教,感谢感谢
1
ghwolf007 2021-01-16 11:30:53 +08:00
|
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 |
3
yang957862615 OP @ghwolf007 感谢感谢,看了很久但是还是不懂怎么用共享库发布这种多模块项目,期待再赐教
|
4
calmzhu 2021-01-16 13:24:30 +08:00 via Android
这个需求跟 jenkins 关系不大。
每次发发布时手动选择发布的模块? 那么每次判断哪些模块要发布,对应的版本。这个判断的数据来源是哪里呢 数据来源打通做过关联自动化触发就行了。 如果每次发哪些没有个可靠的逻辑。那么做其他啥都没用 |
5
ghwolf007 2021-01-16 14:12:39 +08:00
@yang957862615 先按照 4 楼说的梳理清楚发布逻辑,共享库可以帮助你更优雅的实现更复杂的逻辑。
|
6
Mithril 2021-01-16 14:28:24 +08:00 1
本质上不要用 CI 系统做太多事,尤其是依赖管理这种。它不是拿来干这个的。用好你对应语言的依赖管理功能,然后通过 CI 生成配置文件或者环境变量写进去就好了。
特别是 Jenkins 这种做的不太行的 CI,当年用 Jenkins 是没得选,现在产品这么多,真的不想再配这东西去了。配置管理,插件管理,头疼的不行。更别说那个码农审美的 UI 了,甚至连最基本的对齐都做不到。 |
7
xuanbg 2021-01-16 16:08:00 +08:00
拆项目,每个项目 1 个模块。
|
8
25OHd2qObJmJ6P10 2021-01-16 16:34:34 +08:00 via iPhone
微服务化
|
10
yang957862615 OP @calmzhu 感谢回复,我的想法是通过 webhook 传递一个参数来实现,但是一直没搜到相关资料,如果您有经验请赐教
|
11
yoyos 2021-01-16 20:45:34 +08:00
前段时间做过一个类似的工作,gitlab webhook 回调,根据发生变更的文件所在的目录,判断出是哪些模块需要构建,然后执行对应的任务就行了。
用了共享库实现,但是 jenkins 确实拉垮,调试非常不方便 |
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' |
13
yang957862615 OP @calmzhu 感谢感谢
|