代码监控
质量监控报告
提交监控报告
测试监控报告
CI 关键指标
持续集成过程有效性度量
构建频率
时间构建平均恢复时长
构建成功率
构建平均时长
持续集成可能产?的关键质量数据
代码重复率 (Duplications)
代码复杂度 (Complexity)
问题数 (Issues)
单元测试?例数,通过率,及测试报告
功能测试?例数,通过率,及测试报告
自动化部署
? 自动化数据库管理、数据库版本化
? 自动化环境配置管理
? 部署流水线
? 一次构建,随处部署
? 容器化部署、凤凰部署
? 自动化部署验证
? 自助部署
以完全一致的方式部署所有环境,对部署过程反复验证,降低部署风险
部署自动化不仅仅是应用,包括对环境配置,数据库变更的自动化
自动化数据库管理的要点:
? 以基线和增量脚本来建立数据库,将脚本放进版本控制库管理
? 定期重新设置基线,提升建库效率
? 以完全一致的脚本变更所有环境数据库,对变更过程反复验证,降低变更风险
? 将测试数据也变成代码,自动化同时提供回滚脚本,或回滚方案增量演进式数据库设计,避免大规模、不可逆的数据库变更
自动化环境配置管理的要点:
? 以代码的方式定义每一类环境,并放进版本控制库管理,实现所有环境变化可追溯
? 对环境定义进行设计,分离共性和变异性部分
? 消除人工参与,避免环境漂移
? 以完全一致的脚本来重建和变更所有类型的环境,对变更过程反复验证,降低变更风险
? 提供对环境关键配置信息变动的监控
部署流水线的要点:
? 自动化从代码提交到生产发布的整个过程,或称价值流
? 包含完善的质量验证环节,比如代码检查、功能自动化测试、性能测试等
? 整个流水线对团队所有人直观可视化,一旦失败必须立即修复
? 流水线包含必要的人为控制记录每一次自动和手动触发操作,作为过程审计的依据
容器化部署的要点:
? 在软件构建时,将软件和其运行时作为整体进行打包产生镜像,并对产生的容器镜像进行版本管理
? 将软件包中与环境差异相关的配置与包相分离
? 一个容器实例中只运行一个应用实例
? 每一次部署的环境都是完全一致的全新的环境,下一次部署时之前的环境被销毁(凤凰部署)
?动化部署验证
自动化部署验证的要点:
? 方式1:通过监控手段,对资源状态、系统可访问性、响应时长等进行度量
? 方式2:应用和服务提供状态自检服务,便于监控/测试工具对其检测
? 方式3:通过覆盖系统主用户/业务场景,并不产生脏数据的自动化测试用例来验证应用正确性
在生产环境为自动部署验证的用例准备专门的一组测试数据
?助部署
? 自助部署必须通过组织标准的部署、发布工具完成
? 产品研发团队通过内部评审来决策是否部署,简化或取消审批流程
? 需要有金丝雀发布或可控特型开关的能力降低部署、发布安全性
? 具备DevOps文化,团队兼具部署自主权力和线上问题支持的责任,责任共担