我们正在路上—从持续集成到持续发布

简介:
  持续集成作为一种很好的软件工程实践被很多团队所采用,和其他一些先进的实践一样,它最终的目的一定是服务于产品的。产品的价值最终体现在用户体验的提升,而这个的前提就是产品的每一次更新能够及时地传递给用户,对于运维团队来说就是更快地在生产环境中部署最新的产品,对于研发团队来说就是更频繁地发布可以 工作的软件。
  暂且抛开业界非常流行的DevOps理念,单纯地从研发团队来看,如何快速的发布对用户有价值的软件是重中之重。
  那结合持续集成,我们又可以做些什么呢?
   先来看看我们持续集成的现状
  独立的环境:持续集成往往有一套独立的 测试环境,而团队还会在其他测试环境中进行测试,两者似乎从来没有交集
  独立的构建:持续集成往往就是对当前最新的代码做一些自动化的测试,而完全忽略了软件版本的管理,甚至不能很好的保证各种测试是否是基于同一份代码
  辅助手段:持续集成往往作为一种测试的辅助手段,更多的是用于快速发现代码提交阶段的错误
  以上这些在持续集成初期完全没有问题,而且这种方式也的确带来了不少的价值,能够帮助团队更透明地了解产品的质量,并且快速的定位和解决问题。只是,我们可以做的更多
   再来展望下持续发布的流程
  整体的思路就是以持续集成流水线作为核心,把软件发布的各个环节透明地展示给团队,并且通过流水线来管理版本的发布流程
  测试环境整合:打通持续集成环境/手工测试环境/线上模拟环境,保证一条流水线上使用同一份代码,同一份构建物
  测试流程整合:一键式的环境部署和一键式的版本管理(打TAG,拉分支,构建物的存储等),发布前对产品质量有清晰的了解
  重要和主要手段:以持续发布流水线为基准,并积极拓展其他类型的测试
  把持续集成融入到产品开发和发布阶段,而不是简单地搭建一套“自动化运行任务”,并充分利用构建流水线实现流程和质量的双重把控
  最后来看下某个产品初步定义的持续发布的流程
   产品现状
  三套环境:持续集成环境(云主机), 手工测试环境(云主机),线上模拟环境(物理机)
   持续集成状态
  自动化的编译,打包,部署,冒烟测试和快速 性能测试已经实现自动化并实时通过代码提交触发,全程20分钟左右
   单元测试和静态代码检查还在完善中,也实时通过代码提交触发,不过没有列入关键点,也就是成功与失败并不直接影响构建流程
  每日的 功能测试(1000+个 测试用例)在晚间运行,全程3个小时左右
  新功能测试在手工测试环境下进行
  上线前需要在线上模拟环境进行性能测试和稳定性测试

  持续发布流水线
  持续集成环境实时保证当前的提交没有破坏基本功能
  通过手工触发(QA人员控制),一键部署产品到手工测试环境并能在流水线上展示手工测试结果(通过简单的设置一个变量达到效果);同时可以选择触发功能测试,达到同步的执行
  如果QA人员认为当前测试版本可以达到内部发布要求,可以一键打TAG,并生成和存储dist包
  通过手工触发(QA人员控制),一键部署dist包到模拟线上环境,而后自动化进行性能测试和稳定性测试
  理想状态这步应该是自动触发,由于目前机器的不可独占性,暂时只能手工触发
  自动化的性能测试和稳定性测试还是实施中
  最终版本的对外发布也是通过手工触发(QA人员控制)
  以上的流程是根据项目/产品的需求和现状制定的,只是一些思路可以借鉴,具体的实施一定要结合实际情况,因地制宜的开展
   Jenkins持续发布流水线
  几个Jenkins持续发布流水线配置小Tips
  通过BuildNameSetterPlugin显示当次流水线构建的版本(SVN revision或是Git revision)
  通过ParameterizedTriggerPlugin自动触发下游任务,并把构建版本信息传递下去
  通过CopyArtifactPlugin用于构建物的部署
  通过BuildPipelinePlugin手工触发某些任务,用于需要人工介入的阶段
最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
1月前
|
数据管理 测试技术 持续交付
深入理解软件测试中的持续集成与持续部署
在现代软件开发实践中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)是提升开发效率、保障产品质量的关键环节。本文将深入探讨CI/CD的概念、实施策略及其在软件测试中的作用,旨在为读者揭示如何通过有效的自动化流程来优化测试活动,减少人为错误,并实现快速反馈和迭代。文章还将讨论面临的挑战和可能的解决方案,以期帮助团队构建更加健壮的开发和测试环境。
|
2月前
|
存储 运维 jenkins
放弃"Jenkins"的种种理由,期待更好赋能研发的"持续交付平台"
Jenkins 很酷,但是不完美,有历史局限性造成的问题。本文仅从“如何更好给研发团队赋能的角度”,剖析Jenkins, 探讨理想的持续交付平台, 不带货无广告~
|
10天前
|
测试技术 API 开发工具
带你读《代码管理实践10讲》——四、打破代码评审“小步快跑难落地”的魔咒
带你读《代码管理实践10讲》——四、打破代码评审“小步快跑难落地”的魔咒
31 0
|
监控 测试技术 程序员
732.【chatGTP】测试工作人员如何使用容器云持续集成,持续部署?
732.【chatGTP】测试工作人员如何使用容器云持续集成,持续部署?
116 0
|
监控 安全 测试技术
常识三持续集成、持续交付、持续部署
概念 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署
815 0
常识三持续集成、持续交付、持续部署
|
敏捷开发 前端开发 BI
好的每日站会,应该这么开 | 敏捷开发落地指南
高效落地敏捷开发,先从这3个关键活动着手。在敏捷迭代中,虽然迭代周期比较短,但依然需要对迭代过程进行有效跟进。如果在输入、过程、输出环节,没有要求,每日站会(迭代跟进)将会非常低效。好的每日站会,应该这么开!
1090 0
好的每日站会,应该这么开 | 敏捷开发落地指南
|
测试技术
如何保障研发质量不踩坑?阿里技术专家教你几招
面对自动化测试成本高、测试不稳定、测试无法严控发布质量等常见研发过程中的测试问题时,企业如何避免?如何保障研发质量?阿里巴巴研发效能事业部-研发协同平台高级技术专家李帅(花名焦霸),通过阿里巴巴实践经验总结,为大家支招,并提供详细可落地的解决方案。
6840 0
|
机器学习/深度学习 运维 测试技术
【TICA2020早班车】让测试,不再成为持续交付的瓶颈
阿里QA导读:早班车第四趟,TICA2020倒计时【12天】,大家有没有更加期待大会的到来呢?感受到大家对干货的渴求,今天早班车又为大家带来了主会场嘉宾-朱少民老师关于持续测试的探讨。不要忘记参与文末抽奖,赢免费门票和周边哟。团体票需求直接后台联系小编或者扫码加群咨询哦~~
180 0
【TICA2020早班车】让测试,不再成为持续交付的瓶颈
在一个执行力极差的团队工作是一种怎样的体验?
一个执行力极差的团队能把一个公司活活的拖死,在这种团队中工作是一种怎么的体验呢?相信很多小伙伴会对这种团队的工作氛围感兴趣。正好冰河在假期与一位经历过这种团队的朋友聊天,聊到了这个话题,今天就给小伙伴们总结下在一个执行力差的团队工作是一种怎样的体验!
258 0
|
测试技术
SOFAChannel#5 线上直播报名:给研发工程师的代码质量利器 —— 自动化测试框架 SOFAActs
线上直播第 5 期《给研发工程师的代码质量利器 —— 自动化测试框架 SOFAActs》报名开启!5 月 16 日周四晚 7 点,围绕蚂蚁金服的多年测试实践的积累与沉淀,自动化测试框架 SOFAActs 核心成员青勤将为大家带来精彩分享,不要错过哦。
992 0