天天看点

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

  暂且抛开业界非常流行的devops理念,单纯地从研发团队来看,如何快速的发布对用户有价值的软件是重中之重。

  那结合持续集成,我们又可以做些什么呢?

  先来看看我们持续集成的现状

  独立的构建:持续集成往往就是对当前最新的代码做一些自动化的测试,而完全忽略了软件版本的管理,甚至不能很好的保证各种测试是否是基于同一份代码

  辅助手段:持续集成往往作为一种测试的辅助手段,更多的是用于快速发现代码提交阶段的错误

  以上这些在持续集成初期完全没有问题,而且这种方式也的确带来了不少的价值,能够帮助团队更透明地了解产品的质量,并且快速的定位和解决问题。只是,我们可以做的更多

  再来展望下持续发布的流程

  整体的思路就是以持续集成流水线作为核心,把软件发布的各个环节透明地展示给团队,并且通过流水线来管理版本的发布流程

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

  测试环境整合:打通持续集成环境/手工测试环境/线上模拟环境,保证一条流水线上使用同一份代码,同一份构建物

  测试流程整合:一键式的环境部署和一键式的版本管理(打tag,拉分支,构建物的存储等),发布前对产品质量有清晰的了解

  重要和主要手段:以持续发布流水线为基准,并积极拓展其他类型的测试

  把持续集成融入到产品开发和发布阶段,而不是简单地搭建一套“自动化运行任务”,并充分利用构建流水线实现流程和质量的双重把控

  最后来看下某个产品初步定义的持续发布的流程

  产品现状

  持续集成状态

  新功能测试在手工测试环境下进行

  上线前需要在线上模拟环境进行性能测试和稳定性测试

 持续发布流水线

  持续集成环境实时保证当前的提交没有破坏基本功能

  通过手工触发(qa人员控制),一键部署产品到手工测试环境并能在流水线上展示手工测试结果(通过简单的设置一个变量达到效果);同时可以选择触发功能测试,达到同步的执行

  如果qa人员认为当前测试版本可以达到内部发布要求,可以一键打tag,并生成和存储dist包

  通过手工触发(qa人员控制),一键部署dist包到模拟线上环境,而后自动化进行性能测试和稳定性测试

  理想状态这步应该是自动触发,由于目前机器的不可独占性,暂时只能手工触发

  自动化的性能测试和稳定性测试还是实施中

  最终版本的对外发布也是通过手工触发(qa人员控制)

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

  以上的流程是根据项目/产品的需求和现状制定的,只是一些思路可以借鉴,具体的实施一定要结合实际情况,因地制宜的开展

  jenkins持续发布流水线

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

  几个jenkins持续发布流水线配置小tips

  通过buildnamesetterplugin显示当次流水线构建的版本(svn revision或是git revision)

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

  通过parameterizedtriggerplugin自动触发下游任务,并把构建版本信息传递下去

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

  通过copyartifactplugin用于构建物的部署

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

  通过buildpipelineplugin手工触发某些任务,用于需要人工介入的阶段

最新内容请见作者的github页:http://qaseven.github.io/

继续阅读