目录
Part I: Foundations / 基础篇 1
Chapter 1: The Problem of Delivering Software / 软件交付的问题 3
Introduction / 引言 3
Some Common Release Antipatterns / 一些常见的发布反模式 4
Antipattern: Deploying Software Manually / 反模式:手工部署软件 5
Antipattern:Deploying to a Production-like Environment Only after Development Is Complete / 反模式:开发完成之后才向类生产环境部署 7
Antipattern: Manual Configuration Management of Production Environments / 反模式:生产环境的手工配置管理 9
Can We Do Better / 我们能做得更好吗 10
How Do We Achieve Our Goal / 如何实现目标 11
Every Change Should Trigger the Feedback Process / 每次修改都应该触发反馈流程 13
The Feedback Must Be Received as Soon as Possible / 必须尽快接收反馈/ 14
The Delivery Team Must Receive Feedback and Then Act on It / 交付团队必须接收反馈并作出反应 15
Does This Process Scale / 这个流程可以推广吗 16
What Are the Benefits / 收效 17
Empowering Teams / 授权团队 17
Reducing Errors / 减少错误 18
Lowering Stress / 缓解压力 20
Deployment Flexibility / 部署的灵活性 21
Practice Makes Perfect / 多加练习,使其完 美 22
The Release Candidate / 候选发布版本 22
Every Check-in Leads to a Potential Release 23
Principles of Software Delivery / 软件交付的原则 24
Create a Repeatable,Reliable Process for Releasing Software / 为软件的发布创建一个可重复且可靠的过程 24
Automate Almost Everything / 将几乎所有事情自动化 25
Keep Everything in Version Control / 把所有的东西都纳入版本控制 26
If It Hurts, Do It More Frequently, and Bring the Pain Forward / 提前并频繁地做让你感到痛苦的事 26
Build Quality In / 内建质量 27
Done Means Released / “DONE”意味着“已发布” 27
Everybody Is Responsible for the Delivery Process / 交付过程是每个成员的责任 28
Continuous Improvement / 持续改进 28
Summary / 小结 29
Chapter 2: Configuration Management / 配置管理 31
Introduction / 引言 31
Using Version Control / 使用版本控制 32
Keep Absolutely Everything in Version Control / 对所有内容进行版本控制 33
Check In Regularly to Trunk / 频繁提交代码到主干 35
Use Meaningful Commit Messages / 使用意义明显的提交注释 37
Managing Dependencies / 依赖管理 38
Managing External Libraries / 外部库文件管理 38
Managing Components / 组件管理 39
Managing Software Configuration / 软件配置管理 39
Configuration and Flexibility / 配置与灵活性 40
Types of Configuration / 配置的分类 41
Managing Application Configuration / 应用程序的配置管理 43
Managing Configuration across Applications / 跨应用的配置管理 47
Principles of Managing Application Configuration / 管理配置信息的原则 47
Managing Your Environments / 环境管理 49
Tools to Manage Environments / 环境管理的工具 53
Managing the Change Process / 变更过程管理 53
Summary / 小结 54
Chapter 3: Continuous Integration / 持续集成 55
Introduction / 引言 55
Implementing Continuous Integration / 实现持续集成 56
What You Need Before You Start / 准备工作 56
A Basic Continuous Integration System / 一个基本的持续集成系统 57
Prerequisites for Continuous Integration / 持续集成的前提条件 59
Check In Regularly / 频繁提交 59
Create a Comprehensive Automated Test Suite / 创建全面的自动化测试套件 60
Keep the Build and Test Process Short / 保持较短的构建和测试过程 60
Managing Your Development Workspace / 管理开发工作区 62
Using Continuous Integration Software / 使用持续集成软件 63
Basic Operation / 基本操作 63
Bells and Whistles / 铃声和口哨 63
Essential Practices / 必不可少的实践 66
Don’t Check In on a Broken Build / 构建失败之后不要提交新代码 66
Always Run All Commit Tests Locally before Committing, or Get Your CI Server to Do It for You / 提交前在本地运行所有的提交测试,或者让持续集成服务器完成此事 66
Wait for Commit Tests to Pass before Moving On / 等提交测试通过后再继续工作 67
Never Go Home on a Broken Build / 回家之前,构建必须处于成功状态 68
Always Be Prepared to Revert to the Previous Revision / 时刻准备着回滚到前一个版本 69
Time-Box Fixing before Reverting / 在回滚之前要规定一个修复时间 70
Don’t Comment Out Failing Tests / 不要将失败的测试注释掉 70
Take Responsibility for All Breakages That Result from Your Changes /为自己导致的问题负责 70
Test-Driven Development / 测试驱动的开发 71
Suggested Practices / 推荐的实践 71
Extreme Programming (XP) Development Practices / 极限编程开发实践 71
Failing a Build for Architectural Breaches / 若违背架构原则,就让构建失败 72
Failing the Build for Slow Tests / 若测试运行变慢,就让构建失败 73
Failing the Build for Warnings and Code Style Breaches / 若有编译警告或代码风格问题,就让测试失败 73
Distributed Teams / 分布式团队 75
The Impact on Process / 对流程的影响 75
Centralized Continuous Integration / 集中式持续集成 76
Technical Issues /技