App架构
如下图,整个架构分为3层:
组件层:业务无关,除基础组件外,每个组件只提供一个独立的功能,供上层使用。
模块层:同一功能/业务相关的代码封装成独立的模块,依赖组件层,模块间通过URL和接口交互。
应用层:使用CocoaPods管理需要的组件、模块,通过URLRouter统一调度业务模块。
开发测试
每个组件或模块都是一个独立app,独立git仓库,可以单独开发、测试。
不同小组维护不同的模块,遵循Github flow或Gitlab flow流程,可以避免开发协作的各种问题。
每个组件、模块集成单元测试,模块可集成UI流程测试;
开发人员需保证单元测试和UI测试都通过,才能提交QA测试;
对应的模块测试完成后再集成到主工程中测试;
测试中的问题,可以快速定位到模块->组件,对应团队即时处理,提高发布效率;
持续集成和部署
Github actions
Gitlab CI/CD
Jenkins自建
开发人员尽量保证每个提交单一功能原则,CI对每个提交进行安全性检查(构建&测试),
未通过的添加邮件或即时通讯工具提醒开发人员。
运维方案
添加必要的Crash&性能监控,即时发现、处理线上问题。
发布之前使用Xcode measure(metrics:)或其他工具进行性能相关测试,便于提前发现问题。