超越持续集成——持续交付
1. 持续交付概述
持续交付(CD)涉及获取集成代码的工件,并将其依次部署到各个环境中,以实现多层次的自动化和手动测试。CD不仅关乎工具和实践,还涉及相关人员。开发人员、测试人员、业务和运营人员之间的沟通与协作至关重要。
为什么需要持续交付呢?它能让我们尽快测试新想法和新功能。停留在代码库中而未被客户使用的代码毫无用处,同时也能快速修复生产环境中的漏洞。频繁向生产环境发布软件还能降低发布风险。长时间的发布间隔会导致生产环境同时发生大量变更,增加了出错的风险,并且查找和修复问题的成本也很高。这种风险和对发布的担忧还会导致开发团队与运维人员或系统管理员之间产生隔阂。而频繁发布有助于控制变更规模,更快地隔离和修复问题。
2. 部署流水线
部署流水线是持续交付设置的核心部分。下面是一个典型的部署流水线实现图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Build<br>compile, unit tests, binaries<br>(automatic)):::process --> B(Deploy to testing environment<br>(automatic)):::process
B --> C(Smoke tests):::process
B --> D(Acceptance tests):::process
C --> E(Dep