作为企业级新型CRM开创者,销售易随着业务的快速发展,所服务的客户也逐渐增多。同时,越来越多的大客户希望能够拥有私有的、个性化的App,从而提升企业产品形象以及获得更安全、更稳定的服务保障。为此,销售易不仅需要更快速地响应客户需求和更高质地交付产品,还要构建一个从需求到代码开发、到测试、再到差异化交付App的持续集成和持续交付体系。且这一点十分重要和紧迫。
销售易App持续集成与交付
销售易App拥有完善的CI(Continuous Integration,持续集成)/CD(Continuous Deployment,持续交付)建设方案,不仅解决了从需求创建到App发布整个过程中不同阶段遇到的问题,而且也极大提高了团队的持续交付能力,缩短了集成发布周期,让App能够按时保质保量上线发布。
销售易通过规范化、流程自动化、定制化、度量化等手段,建设了可视化、自动化、智能化的持续集成交付流水线,使得销售易App的业务需求真正实现高效地、可持续地交付。
一、规范化
在大型团队协作中,经常会出现各种各样的问题,例如
- 如何将研发过程中各环节关联起来?
- 如何做到需求和代码分支关联,确保代码可追溯?
- 如何使得大家都能有条不紊地进行工作,关键是研发规范的建立?
通过建立严格的研发流程规范、代码规范、提交规范、测试准入和准出规范、发布规范、监控规范,销售易App在规范化开发中大幅提高了研发效能,降低App开发的风险,提升App的质量。
举一个代码提交规范的例子:所有销售易App的代码提交必须符合严格的commit message规则方可通过CI检测,提交必须包含本次提交的类型及描述,来自哪个需求,在哪个发布版本中发布。拒绝一切非需求化代码,严格管控并规范化提交,这使得需求和代码之间能建立起联系,做到任何代码都可被追溯,并且后续可自动生成release log。
二、 流程自动化
研发流程琐碎的主要原因是研发需要人工参与CI/CD中每一步过程,一旦把移动研发从CI/CD过程中解放出来,同时把所有琐碎的步骤通过自动化流水线贯穿起来,研发效能和生产力自然会得到很大的提高。销售易构建了一条自动化的移动App CI/CD流水线,从一开始只有构建的单项能力,到后来慢慢扩展到拥有了定制化、静态扫描、自动化冒烟测试、发布检测等多项能力。
2.1 项目集成流程自动化
项目集成通过托管队列实现任务自动化顺序执行,在关键性节点流程执行成功后发送通知,让研发对流程状态了然于胸,一旦持续集成流程执行异常,例如项目编译失败、静态检查没通过等,CI助手BOT会第一时间通知研发及时处理。
2.2 打包发布流程自动化
在没有CI/CD流水线前,每到App发布日,研发部门就如临大敌守在打包机器前,历经各种苦难,直到顺利打出所有Android, iOS App。如同项目集成流程自动化一样,我们把整个打包发布流程做了全流程自动化,无人值守的自动打包发布方式解放了研发人员,同时所有App都自动发布到销售易Internal App Store供后续测试与一键上传应用市场。
2.3 质量反馈流程自动化
没有反馈验证的流水线是缺失灵魂的。销售易App CI/CD流水线加入了静态代码扫描、单元测试、i18n资源检测、发布包检测、UI自动化冒烟测试等众多质量反馈验证手段,通过分层分级验证,做到有效反馈,根据反馈再快速修复提高App质量。特别是UI自动化测试,集成了销售易MTC(Mobile Test Center),会自动随机选取机型进行测试,一定程度上也保证了机型覆盖率与兼容性。
三、定制化
如何能快速响应客户需求并交付私有化App?最简单的方案就是基于每个客户切出独立的代码分支来满足大客户的需求,但该方案会带来如下的问题:
- 代码和主版本分离,需要专人维护,时间长了就会成为历史包袱
- 很多业务变成给客户定向写死的功能,交付后无法跟随主版本升级
- 需要对私有App做专门的冒烟和验证,且质量无法把控
- 打包上架,后续维护都需要大量额外工作
销售易通过以下实践,较好地解决大客户私有App定制化问题,并大幅提升交付效率与质量:
- 单一代码源(Single Source of Truth):所有代码集中在一个仓库避免出现歧义和混乱;并且代码主干被严格保护,任何针对主干的代码改动都需要经过重重检验,才能被接纳。
- 配置即代码(Configuration as Code):将所有客户定制化的内容通过配置项存储在代码库里,通过CI/CD pipeline在打包发布时进行动态定制与校验。
- 一键按需构建与发布:拥有一键构建和发布平台,随时随地可以为任何客户构建和发布App。
采用全新的定制化方案和统一CI/CD流水线,销售易持续为几十家客户提供了私有化App并赢得了客户赞誉。
四、度量化
If You Can’t Measure It, You Can’t Improve It(如果你不能度量它,你就无法提高它)。整个持续集成交付流水线的自检,我们到底做得怎么样,持续交付的能力如何,发布后App质量如何?我们定义了如下指标用于后续统计与持续改进。
通过集成效率可以反应出打包变快了,集成效率变快了。成功率越高说明流水线越稳定,质量反馈变快了。最后质量主要从代码质量、项目测试质量、线上监控来度量,通过静态代码分析来检测代码合法性和规范性,通过发布计划数量和状态,可以反映出项目质量情况,是否及时发现及时修复,是否达到发布标准等,通过线上监控可以实时发现潜在的crash bug。
展望与规划
销售易App的CI/CD建设会继续在移动工程化领域进一步探索,朝着更自动化和智能化方向演进,全面提升研发协同效率,并给企业带来更多的业务价值,为移动端业务蓬勃发展保驾护航!
更多技术相关文章,请关注销售易CRM官方微信-前沿易起说栏目!点击“了解更多”即刻试用销售易CRM