持续交付:发布可靠软件的系统方法


基础篇

软件交付的问题

一些常见的发布反模式

如何实现目标

收效

候选发布版本

软件交付的原则

配置管理

实用版本控制

依赖管理

软件配置管理

环境管理

持续集成

实现持续集成

持续集成的前提条件

实用持续集成软件

必不可少的实践

时刻准备着回滚到前一个版本

推荐的实践

分布式团队

分布式版本控制系统

测试策略的实现

测试的分类

现实中的情况与应对策略

流程

部署流水线

部署流水线解析

什么是部署流水线

部署流水线的相关实践

提交阶段

自动化验收测试之门

后续的测试阶段

发布准备

实现一个部署流水线

度量

构建与部署的脚本化

构建工具概览

构建部署脚本化的原则与实践

面向JVM的应用程序的项目结构

部署脚本化

提交阶段

提交阶段的原则和实践

提交阶段的结果

提交测试套件的原则与实践

自动化验收测试

为什么验收测试是至关重要的

创建验收测试

应用程序驱动层

实现验收测试

验收测试阶段

验收测试的性能

非功能需求的测试

非功能需求的管理

如何为容量编程

容量度量

容量测试环境

自动化容量测试

将容量测试加入道部署流水线中

容量测试系统的附加价值

应用程序的部署与发布

创建发布策略

应用程序的部署和晋级

部署回滚和零停机发布

紧急修复

持续部署

交付生态圈

基础设施和环境管理

理解运维团队的需要

基础设施的建模和管理

服务器的准备及配置的管理

中间件的配置管理

基础设施服务的管理

虚拟化

云计算

基础设施和应用程序的监控

数据管理

数据库脚本化

增量式修改

数据库回滚和无停机发布

测试数据管理

数据管理和部署流水线

组件和依赖管理

保持应用程序可发布

依赖

组件

管理依赖关系图

管理二进制包

用Maven管理依赖

版本控制进阶

版本控制的历史

分支与合并

DVCS

基于流的版本控制系统

主干开发

按发布创建分支

按功能创建分支

按团队创建分支

持续交付管理

引言

配置与发布管理成熟度模型

项目生命周期

风险管理流程

常见的交付问题,症状和原因

符合度与审计