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