如何实现“持续集成”?闲鱼把研发效率翻了个

  阿里妹导读:业务的快速发展,需要我们更快速地响应,和更高质量的产品的交付。如何从原来大(xiao)迭(pu)代(bu)的开发模式切换为精益开发模式?2-1-1(2周需求交付周期,1周需求开发周期,1小时集成时长)以远见卓识,实现客户交付价值,响应业务需求成为我们的目标。今日闲鱼工程师琪钰为我们分享:闲鱼是多么有目标的前进的?切换开发模式后,又挑战了哪些益益问题和?

微信号:15019000637
添加微信群,试用软件
复制微信号

  名词:精益开发模式,团队依靠看板组织集体,持续地交付为,需求按等级解释,以逐步进入开发、提测。因为在项目集体中,采用看板泳道来管理需求,因此在闲鱼,同学们习惯习惯走道模式。

  1、我们拒绝的要求和挑战

  业务对交付响应时间要求快。闲鱼业务正迅速发展中,反摩尔理论告诉我们,交付迟到,商品价值打折得越快。速度为王,为了满足业务快速和试错对技术团队能否快速交付需求提出了更大的挑战。

  团队规模变大,项目沟通成本越来越高。随着鱼业务和技术的快速发展,交付的环境也越来越闲,集体的任务越来越多。整个研究过程包括需求管理、开发、测试、发布、回归等关键活动,涉及一个(研究作业平台,主要是需求、bug管理等)、代码库、打包平台、自动化测试平台等多个系统,沟通协同的成本越来越高。

  多分支并行开发增加额外成本。项目开发为精益开发模式最核心的改变各需求是独立的互不影响,可以分别进行独立的测试集成,保持主干的稳定,随时拉发布分支进行增长和发布。但多分支开发的问题,也带来了新的配置、手动打包、安装测试包等人工成本,都成倍的增加。

  随时来的提测都能够测出来。之前发布版本时间,坚持教学客户端、课堂提测,介入比较晚会。项目开发切换为精益模式对技术质量团队提出开发更高的要求,面对多需求同时提测的情况,如何快速地响应测试。

  所以,构建了一个从需求到代码开发的过程,再到测试整个过程,赋予其工具化、自动化就非常必要和紧急,而流程集成就是一个高效的持续过程的重要表现形式。集成系统摆在我们面前。这将降低开发过程中的一定程度的沟通成本,流程工具化,加速自动化。

  现在针对服务端的集成发布有很多可以参考的实践,但对客户端的集成发布说明,我们仍然面对以下难点。

  2、客户端集成的难点

  将,一个过程中的活动从各相关关联创建到发布的关键如下:创建需求->创建代码分支->创建打包项目->提交代码->打包->提交测试->修复->提交集成->发布

  如何做到需求和分支代码关联,确保代码可降;

  如何实现代码分支和打包项目关联,代码更改可自动触发打包;

  实践代码范围和测试范围如何关联,确保测试回归范围。

  多分支并行,如何有条不规则的进行集成。并行请求支持时越多,有机会提交集成,可能的争吵争吵。如何降低集成的冲突,以及集成后主干的稳定性,确保集成质量;

  一提交代码就触发如何,测试进一步左移;

  如何降低自动化测试的成本,提高测试效率;

  虽然要解决上面的这些难点,但补充了平台内平台对服务端的支持(集团内平台对服务端的发布有很好的支持,但对于客户端的集成发布,涉及工具比较多)。

  3、怎么做客户端集成集成

  为了解决从需求创建到发布整个项目过程中的协同、构建、集成和测试等问题,提高团队的持续交付能力。针对客户端集成发布,我们的整体方案的目标是首先是拉通整个需求交付流程中的各个单独,简化交付工作,提供及时的质量技术,让开发学生关注业务的开发;提高有效集成率及能够发布集成生命周期,让版本能够按时上线,让大家能够按时下班;建设可视化、自动化、自动化业务需求的持续集成,让真正真正的可持续交付。

  空谈误国,实干兴邦。在更多的改进之前,我们先把基础的流程通过工具串起来,才能看到整体,然后再发现问题先改进改进。

  流程化

  我们的核心流程是这样的,增加了创作需求,提交通道就已经建立,直到发布需求。

  首先开发按照规范创建需求分支后,自动分支和需求进行绑定,同时创建打包项目后,自动将需求和打包地址进行绑定,这样可以开发用户提交代码,就可以根据需求、代码提交内容等,提交影响范围,同时自动触发打包,和开发学生不用再担心最新的包中是否有刚提交的内容,每次更改都会触发打包;

  打包成功后,根据合并请求、推送定时等不同的触发方式,及分支类型,自动触发相应的测试对象,进行独立的自动化测试;

  测试件完成后,结果将被及时反馈出来,确保每次代码更改都经过测试验证的,进一步向左移动,标记问题在团队项目帮助上看问题将执行出来,团队在项目民族中能够持续发现问题,提高集成质量,降低发布风险,保证业务更顺畅的交付。

  当完成了,这将是整个流程打通之后,我们发现,在整个流程中,还有很多需要人工操作的地方,最容易出错,并且极低地影响效率的地方,对我们来说,这是改进的机会,所以,第二步我们的重点就是做好无人化和自动化。

  无人化

  为支持可持续集成的基础运行,以无人化、自动化、可扩展为目标,基于及幼稚的实验成本,我们参与活动主要包括精益开发协同工作支持无人化及验证两部分。

  鱼CI主要是开发流程支持,如需求绑定、监听更改、触发打包、触发测试等,鱼保护测试部件调度、,结果通知,及申请测试件接入主要扩展部分。当前已接入的测试件主要有UI遍历、UI识别、monkey、单元测试等。最初计划按照演示测试测试的原则,接入更多的测试测试项目,如代码扫描、weex 自动化测试、服务端测试等,测试件覆盖度,进一步自动化测试测试。关于这部分,我们将在这篇文章中做更深入的分享。

  数据搜集

  管理学之父彼得德鲁克说:“如果你不能看到它,你就无法看到它”,实际上我们整个持续集成网络的自检,我们到底有没有反馈,交付的能力如何,我们定义了以下用于调查统计。

  主要指标分为响应能力、效率、质量三个维度,通过响应能力的这些指标,可以反应出打包变快了,质量反馈变快了,集成变快了,综合频率变高了;有效率的指标,反应出工作的成果,成功率说明了越南稳定;最终质量,主要从质量代码和测试质量来发送,通过文件数据,分发可以修改代码的分离、依赖等情况;通过项目测试中错误的传播和传播,可能发生的项目质量情况,能否及时发现修复,是否达到发布标准等。

  4、效果

  闲鱼3月中旬开始试(整体交付模式从精益开发模式),闲鱼所有的业务走全部精益开发模式需求,交付的速度,由未来一个版本到一个版本。这使我们在新加坡全体人员中的改进意见,如打包变快了,需要安排增加越来越多,集成越来越多,以及自动化测试验证集成质量情况。此外,闲鱼在精益模式下质量获得了明显的提升,图如下所示:

  绿色分割线左半部分,是之前未切换到泳道模式前的一个版本,错误看趋势,早期阶段,测试基本未介入,大量代码集成示范后集中测试,在缺陷充分被移除后,直到交付,无法持续交付。绿色分割线右半部分,是某条业务线的缺陷趋势图,小示范的持续综合、及时测试和发现问题、及时修复,可以快速交付。

  5、总结与规划

  简单总结下,我们做的,整个过程就是拉通整个交付过程,有一个稳定的交付,第二步保证交付的效率,即响应快了,集成变快了,质量反馈快了,第三步持续交付,关键词是“持续地”,频次上提出了更高的要求,集成的频率变高了,以前的集成一次,每天一次,现在可以集成,到每晚建造,再到随时集成。

就像以前一样,让开发同学“更”有信心融入一次并发布。

  因此,我们的最终目标就是7*24随时发布窗口限制,真正实现交付自动化自动化和自动化测试,降低构建成本,降低整个自动化测试目标。

  你可能还喜欢

  点击世界图片频道阅读

  贾扬清:我对人工智能方向的一点浅见

  如何搞定技术面试?阿里大牛为你选了8本必备好书

  在阿里五年技术演讲,我有话想说

  关注「阿里技术」

  把握前沿技术脉搏

关键词:闲鱼3闲鱼把