携程小程序持续集成、持续交付几个方面进行详细介绍
发表时间:2023-12-06 17:58:53
文章来源:炫佑科技
浏览次数:125
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
携程小程序持续集成、持续交付几个方面进行详细介绍
目前,携程小程序拥有30+平行业务线,涉及数百家开发,每两周定期发布一次。 这么大的小程序,这么快的业务迭代速度,对我们的技术提出了更高的要求。 。
在携程小程序的开发过程中,如何准确、快速地将小程序交付给测试人员是一个繁琐的过程。 按照以往的做法微信小程序协同开发,开发将代码提交到发布分支后,仍然需要到公司的MCD(携程内部发布平台)进行发布。 十几条业务线同时运行,排队等待包装。 打包完成后,您必须依靠PMO的发布来获取试用代码进行测试。 理想的模式是开发只需要提交代码,不需要关心项目编译、打包、发布等过程。
跨团队协作,如何减少耦合,避免相互影响; 几十个业务线共同维护一个小程序,小程序必须作为一个整体发布。 如何协调发布过程,使其有序进行,将是我们讨论的重点。 本文将详细介绍仓库管理、持续集成、持续交付等方面。
2. 协作流程
携程小程序采用模块化思想,按照业务线对代码进行拆分和隔离,并采用多BU(业务单元)合作模式。 为了避免多人协作时出现版本切换、线上测试隔离等问题,我们将一个完整的项目按照业务类别划分为多个业务仓库,如基础业务、酒店业务、机票业务、火车票业务等。 ,其中 没有依赖关系; 业务仓库的代码通过发布仓库进行合并、打包、上传。 仓库中的代码为预发布版本,如图1所示:
图1 协作架构图
2.1 仓库管理
每个业务模块都是一个独立的Git仓库(ie),互相不影响。 为了实现协作,所有业务仓库必须有统一的规范。 仓库的规格包括以下几点:
值得注意的是,在实现模块化的过程中,业务模块已经被隔离,各个业务仓库无法独立运行。 为了协调各个仓库的路由配置,我们规定在各个模块的根目录下,添加自己的app.json配置来配置业务模块的路由,然后在工具运行时合并各个模块的路由包装好的。 对应关系如下:
图2-1 业务仓库与完整小程序目录对比
在开发阶段,您需要使用我们提供的脚手架工具来完成项目初始化、代码更新、远程打包等操作。 常用命令如下:
执行一个简单的命令-init就可以从各个业务仓库拉取代码,合并成一个完整的小程序,在微信IDE中进行开发。
除了仓库规范外,每个业务仓库还需要配置跨仓库提交代码并同时触发仓库(-auto.git)的发布。
2.2 持续集成
为了降低开发成本,减少人工操作,我们基于微信小程序官方提供的-ci工具构建了自动化上传测试流程。 通过业务仓库中的配置,当业务仓库的发布分支()发生推送事件时,会触发发布仓库(-auto.git),执行我们在.-ci.yml文件中设置的脚本被处决。 主要内容如下:
图2-2 -ci.yml核心配置
从上图可以看出,我们主要依赖于git命令以及git提供的脚手架工具。 使用git——将第三方库(各业务仓库)中提交到指定分支的*新代码合并到当前仓库(发布仓库)的指定位置。 然后,通过脚手架工具执行预定义的脚本文件。 具体流程如下:
图2-3 操作流程
1)获取服务器配置信息,主要包括,Size,RC( )数据:
2)通过从各个业务仓库拉取*新的代码并进行合并,形成完整的小程序代码;
3)通过检查代码合法性,*大程度避免基本语法错误;
4)使用微信官方提供的-ci工具,自动编译并删除无用代码,减少体积;
5)Size检查:通过微信官方提供的-ci方法获取所有分包的Size并测试二维码,计算当前业务仓库的代码提交是否会导致Size超出限制。 超过限制将导致发布失败;
6)RC发布权限检查:服务器返回当前业务仓库的RC值(true/false)来判断我们是否要将其*新代码合并到发布仓库的分支中,以及是否将*新代码压缩成一个zip 包并上传到发布仓库的分支作为预发布版本。 *终发布仓库(-auto.git)和分支的目录结构如下图:
图2-4 发布仓库-auto项目目录
7)数据更新:如果RC为true且代码上传成功,我们将同步更新业务仓库、分包规模等信息到服务器,以便其他业务仓库拉取该仓库*新代码;
8) 构建结果通知:无论成功还是失败,构建结果都会发送给相关组和触发者。 如果失败,将返回详细的错误消息以供故障排除。 如果成功,会返回一个测试二维码,如下图:
(1)失败
(2) 成功
图2-5 构建结果通知
上述任何一个步骤失败都会导致失败。 通过以上流程,保证提交到发布仓库的代码是正确的代码。
2.3 持续交付
目前,携程微信小程序的发布已统一到公司MCD发布平台。 预先编写的脚本在MCD平台上配置。 当发布节点临近时,PMO只需前往MCD平台进行集成发布即可。 此时MCD会自动运行我们预设的脚本,该脚本会在发布仓库的分支上拉取zip包,进行整理,并生成试用版的二维码,由PMO发送给相关人员进行查询集成测试。
图2-6 携程MCD发布平台
测试通过后,PMO将手动提交代码至微信后台审核。 至此,一个完整的常规发布流程就完成了。
三、总结
综上,通过仓库管理,将各个业务线划分为独立的git仓库,保证业务独立开发,互不影响; 通过自动化持续集成解决方案和持续交付与公司的MCD发布平台相结合,一线开发得到极大简化。 人员的开发成本只需要提交代码即可。 打包、测试、上传、预览、通知等操作均由发布仓库自动化完成,避免了人工操作的不稳定和繁琐,保证了业务的敏捷开发和协作。 合作效率。
本文仅介绍常规业务线协同开发的流程。 事实上携程小程序持续集成、持续交付几个方面进行详细介绍,携程的微信小程序已经引入了Taro的概念,并利用Taro技术栈为业务线设计了独特的封装方式。 目前在微信小程序中运行良好,我们正在稳步推广到其他各类小程序(百度、今日头条、支付宝等)。
【关于作者】携程前端框架团队为携程集团各业务线在PC、H5、小程序等各个阶段提供优秀的Web解决方案。 产品包括各类前端/Node端应用框架、研发工作台、前端中台、静态资源发布系统等,目前主要关注领域包括:新一代研发模式探索、Rust构建工具链路升级、应用框架开发、在线文档系统开发、低代码平台搭建、老龄化友好无障碍探索等。