基于Monorepo + 前后端未完全分离的gitlab CI/CD实践
2020/3/3 11:31:17
本文主要是介绍基于Monorepo + 前后端未完全分离的gitlab CI/CD实践,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
看到这个标题,如果你做过
CI/CD
并且对Monorepo
有一定的了解,肯定知道我们面临的困难有多大了。
痛点分析
Monorepo的痛
这个项目有很多子项目,对,是很多,多达几十上百个。
几乎所有的CI/CD
对Monorepo
的支持都不好,执行一次CI/CD
就构建全部的子项目吗?那得花多长时间?开发与QA能接受吗?
目前构建单个子项目大约20秒左右(已进行过webpack
优化),构建5个大约1分零10秒。
构建100个至少需要1小时。
而且这么多业务型的子项目,也不太可能单独去管理它们的版本。
这是要做自动化待解决的首要问题!
前后端未完全分离
什么?都2020年了你告诉我前后端还搅在一起玩耍?
是的,公司领导层都是.NET
后端出身,所以很多项目都是由后端主导的。
页面上其实没有后端的绘制代码,我们是用的React
工程构建的项目,将打包结果拷贝到.NET项目中使用,页面引用打包结果,但是版本控制仍然由后端负责。
同事们一再抱怨流程复杂到令人颤抖:在React
项目中开发,提交git
,推送,提MR;然后构建,将打包结果拷贝到.NET
项目中,再次拉分支提交git
,推送,提MR。这个拷贝过程很容易导致.NET
项目中的csproj
文件同步失败导致.NET
项目在构建时找不到资源而炸掉(对于chunk
文件必须先删掉的,再移除,再添加新的到项目中去,一旦漏掉某项csproj
就同步失败,用过VS
的童鞋应该深有体会)。
这种前端页面由后端控制器绘制出来的项目要做资源分离,面临最大的难题是版本管理(也就是缓存复用与穿透)!
你的webpack
构建版本处理得再风骚,也会被.NET
这个后腿拖得动弹不得。
PS:这不是我的锅,是遗留项目要做重构导致的,这也是我入职以来面临的头疼问题。旧代码视图是用
knockout
+jquery
+.net
代码绘制的,重构后是使用React
绘制,是独立的项目,但是需要将结果拷贝到遗留项目中运行。
这是要做自动化待解决的第二个难题!
CDN的引入
什么?都2020年了你告诉我还有项目没使用CDN
?
是的,公司领导层都是.NET
后端出身,不太在意前端资源的处理。
所有的脚本和样式都是项目启动时加载到内存里,通过后端代码去引入访问的。
@Script.Src("/page/a.js", "/page/b.js"); @Style.Src("/css/a.css", "/css/b.css"); 复制代码
既然要搞自动化布署,前端资源肯定得分离,那么CDN
的引入也是自然的了。
解决方案
这篇关于基于Monorepo + 前后端未完全分离的gitlab CI/CD实践的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享
- 2024-12-24uniapp 连接之后会被立马断开是什么原因?-icode9专业技术文章分享
- 2024-12-24cdn 路径可以指定规则映射吗?-icode9专业技术文章分享
- 2024-12-24CAP:Serverless?+AI?让应用开发更简单
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享