持续集成
- CI的好处,如快速反馈,快速部署和可重复的自动化测试,要远大于实现CI的麻烦。
- 构建是指编译,测试,打包并执行功能测试。
- 将重复的,容易出错的过程自动化。
- 典型开发过程:编译代码,通过数据库定义数据并操作数据,进行测试,复查代码,最后部署软件
- cI减少引入缺陷和修复缺陷之间的时间,从而改进总体软件品质。
CI原则与实践
- 一次构建可能包含编译、测试、审查和部署以及其他一些事情
- 一次构建是将源代码放在一起,并验证软件可作为一个一致的单元运行的过程。
- 构建脚本是一段简单的脚本或一组脚本,来执行编译、测试、审查和部署软件。
- 反馈机制:邮件、SMS,RSS
- 集成构建计算机
- CI的特征:与版本控制系统的链接、构建脚本、反馈机制和集成源代码变更的过程
- 没有自动化的、持续的测试的CI不能算作是CI
- 自动化的代码审查(静态和动态分析)可以通过强制遵守规则来增加软件的品质
- 持续部署保证任何时候都可以拿出能工作的、可部署的软件
- 清楚、简洁的代码和选择得当的类名、变量名和方法名就是最好的文档
- CI关键特征是速度,本质是及时反馈。
- CI价值:减少风险、减少重复过程、随时随地部署、增强项目可见性和产品信心
- I Build So Consistently: Idendify、Build、Share、Continuous.
- 是持续编译还是持续集成
- CI不仅是一种技术上的实现,也是一种组织上和文化上的实现
- 7项实践:
- 经常提交代码
- 不要提交无法构建的代码
- 立即修复无法集成的构建
- 编写自动化的开发者测试
- 必须通过所有测试和审查
- 执行私有构建
- 避免签出无法构建的代码
- CI的一项中心原则:早集成,常集成
- 构建脚本逻辑:清理->编译源代码->集成数据库->执行测试->执行审查->部署软件
- 构建类型:个人、团队、用户。
- 提交构建:编译和单元测试;次级构建:编译和较慢的测试,如组建测试、系统测试、性能测试。
- 构建触发机制:用户驱动、定期执行、轮询变更、事件驱动。
创建全功能的CI系统
- 系统工程一项原则:线性系统的可靠性时每个系统组件的可靠性的乘积
- 单元测试的关键在于没有外部的依赖关系。
- 单元测试,组件测试/集成测试,系统测试,功能测试/验收测试
- 源代码的可靠性取决于测试的覆盖率
- 代码复查、结对编程和静态代码分析
- 审查基于一组预先定义的规则分析代码
- 通过持续执行审查,可以减少发现缺陷和后续修复之间的时间
- JavaNCSS,PMD工具,Checkstyle工具
- 部署软件的六大步骤:
- 为库中的资产打上标签
- 得到干净的环境,避免不当的假定
- 直接从版本控制库中取出软件资产,生成构建版并为它提供标签,然后目标机器安装
- 在生产环境的克隆环境中成功地执行所有级别的测试
- 创建构建反馈报告
- 如果需要,您可以利用版本控制库中的标签回滚构建版
术语
- CI(Continuous Integration)
- SMS(Short Message Service)
- RSS(Really Simple Syndication)