4007676280
云终端系列报道第六十九期 - 实现持续集成 2016-09-01

炙伦云终端分享嘉宾:


标准化构建平台,持续交付跑起来


    3.2 如何实现持续集成?
    随着版本发布的流程,我们来一步一步地规划出一般持续集成具备的基本环节:
    1. 研发同学从 SCM中checkout代码进行日常的版本开发,完成后提交到代码库。
    
    PS:SCM,SourceCodeManagement,源代码管理,常见的有SVN、HG、Git等。
    2. CI Server实时监控代码库分支的变化,一旦检测到分支代码变更,就会自动拉取代码。
    
    PS:这通常需要CI Server和SCM的联动功能才能实现代码监控。以便发现代码变更时,自动拉取分支代码,触发集成构建。
    例如,常见场景有JenkinsServer和Gitlab的组合搭配,后面我再演示给大家看。
    3. CI 服务器会自动编译代码,编译成功后,会运行单元测试。
    
    注意,从编译开始,任何一个环节失败,自动构建都会马上停止,并且把失败信息邮件等方式自动通知研发同学。
    这就是CI的反馈能力,帮助研发同学找到bugs,保证版本质量。
    到目前为止,我们可以总结一下持续集成的一部分的最佳实践:
    1. 有且仅有一个代码仓库;
    2. 自动化构建;
    3. 使用 TDD 开发模式,编写单元测试和集成测试;
    4. 保证 CI 速度,CI越快,反馈效率越高,找到bugs速度越快,迭代效率越高;
    5. 项目组成员都可以查阅所有的集成构建历史;
    
    4. 集成测试通过后,版本开始打发布包,自动部署到测试环境,并且运行部署后的测试。
    
    集成测试一般是指CIServer自动运行旧的功能测试用例或者其他固定的测试流程等等;
    每一次成功的构建,都会邮件通知项目组,然后测试同学会编写新的功能测试用例、运行性能测试以及选择性的回归测试等等,这也是持续集成流程里面唯一需要人工干预的步骤。
    到目前,持续集成基本上结束了,在构建过程中任意一个步骤失败,都会马上停止,并且反馈到研发同学,同时我们也可以总结出剩下的持续集成最佳实践:自动化部署。
    
    上面提到是持续集成的一般流程,给大家介绍持续集成的概念,但是在实际应用中业务环境可能更加复杂,例如:
    1. 公司内部有大量的业务系统,通过API或者API网关关联,研发团队的成员在本地开发某一个组件时,需要开发环境的各大系统来联调;
    2. 为了迭代更快,单元测试、集成测试都可以在开发联调环境来完成,在开发环境构建未通过前无需部署到测试环境;
    3. 自动化部署测试环境后,测试同学会对版本进行更多的手工测试;缺少配置中心对配置进行环境和版本跟踪。
    因此,在这里我会推荐一个持续集成生产模型给大家参考一下:
    
    该持续集成模型具有以下的优势:
    1. 本地开发时可以联调开发环境,更加方便的进行代码测试和单元用例的编写,对研发更加友好;
    2. 集成测试提前在开发环境完成,CI 反馈的速度更快;
    3. 开发环境和测试环境隔离,开发环境可能是唯一的,但是测试环境会有多套,主要提供给测试同学执行更多的人工测试,例如性能测试、新的功能用例测试等等;
    4. 测试同学维护开发环境和测试环境中的功能用例,还可以嵌入自动化测试管理系统来辅助管理;
    5. 配置管理的模式有2种:部署平台管理配置,或者是直接由单独的配置中心管理配置。
    最后,要提醒一下大家,这里只是提供一种比较成熟的思路,切忌生搬硬套,要切合公司的实际情况,梳理代码开发和测试规范,并且应用到持续集成流程中。

上一页:云终端系列报道第六十八期 - 持续集成 下一页:云终端系列报道第七十期 - 持续集成实例
推荐新闻 Recommended news
帮助中心
4007676280