什么是持续部署?
持续部署 (CD) 能够给您的软件团队和客户带来好处。了解什么是持续部署及其好处和最佳实践等。
Sten Pittet
特约作家
持续部署 (CD) 是一个软件发布流程,它使用自动测试来验证对代码库的更改是否正确且稳定,以便立即自动部署到生产环境。
软件发布周期随着时间的推移而演变。将代码从一台计算机移动到另一台计算机并检查其是否按预期运行的传统流程容易出错且占用大量资源。现在,工具可以自动化整个部署流程,从而使工程组织能够专注于核心业务需求,而不是基础架构开销。
持续部署与持续交付
由于术语的原因,持续部署与持续交付之间的区别可能会令人困惑。它们都缩写为 CD,职责非常相似。交付是部署的先决条件。在交付过程中,在产品发布之前有最后的手动批准步骤。
以下是助记符练习,旨在帮助记住两者之间的区别。想想收到来自您最喜欢的在线零售商店的包裹。等待包裹到达时,您需要与送货服务进行协调。这是交付阶段。包裹成功到达后,您可以打开包裹并查看其内容,以确保其符合预期。如果不符合,您可以拒收并退货。如果包裹正确,您就可以“部署”和使用新购买的产品了!
在交付阶段,开发人员将审查和合并代码变更,然后将其打包成构件。然后,该软件包被转移到生产环境中,等待批准才能打开进行部署。在部署阶段,使用自动检查系统打开和审查软件包。如果检查失败,则软件包将被拒绝。
检查通过后,软件包会自动部署到生产环境中。持续部署是完整的端到端自动化软件部署管道。
查看解决方案
使用 Open DevOps 构建和操作软件
相关资料
了解有关自动测试的信息
持续部署有哪些好处?
持续部署为软件开发团队提供了令人难以置信的生产力优势。DevOps 与持续部署相结合,使团队能够显著加快发布速度。由于每次变更都会自动触发部署管道,因此团队可以更快地开发。如果团队对新产品或功能有想法,则可以在推送代码后立即交到客户手中。持续部署允许团队部署小批量变更,这样可以降低发布的风险,并且在出现问题时更容易修复。
从业务角度来看,持续交付使公司能够通过快速部署以及验证新想法和功能来应对不断变化的市场需求。
持续部署工具
一旦您采用了自动测试,最好将其与测试覆盖率工具结合使用,这样您就可以知道您的测试套件覆盖了多少代码库。
最好将覆盖率定在 80% 以上,但要注意不要将高覆盖率与好的测试套件混为一谈。代码覆盖工具可以帮助您找到未测试的代码,但归根结底,您的测试质量才会有所作为。
如果您刚刚起步,不要急于实现代码库的 100% 覆盖率,而是使用测试覆盖率工具来找出应用中尚未进行测试的关键部分,然后从那里开始。
自动化测试
持续部署最关键的依赖关系是自动测试。事实上,持续集成、交付和部署的整个链都依赖于此。自动测试用于防止引入新代码时出现任何回归,并且可以取代对新代码变更的手动审查。
滚动部署
持续部署和交付之间的区别在于在实时环境中激活新代码的自动化步骤。如果部署了错误或重大变更,则持续部署管道必须能够撤销部署。蓝绿部署等自动滚动部署工具是正确持续部署的必要条件。
监控和警报
强大的持续部署管道将提供实时监控和警报。这些工具可让您了解整个系统的运行状况以及新代码部署之前和之后的状态。此外,警报可用于触发滚动部署“撤销”以恢复失败的部署。
持续部署最佳实践
建立持续部署管道后,需要工程团队进行持续维护和参与,以确保其成功。以下最佳实践和行为将确保工程团队从持续部署管道中获得最大价值。
测试驱动的开发
测试驱动开发是在开发开始之前为新软件功能定义行为规范的做法。定义规范后,开发人员将编写与规范相符合的自动测试。最后,编写实际的可交付代码以满足测试用例并符合规范。此流程可确保所有新代码都经过预先自动化测试。另一种方法是先交付代码,然后再生成测试覆盖率。这为预期的规范行为和生成的代码之间的差距留下了机会。
单一部署方法
一旦建立了持续部署管道,就必须将其作为唯一的部署方法。开发人员不应手动将代码复制到生产或实时编辑中。在 CD 管道外部进行手动变更将使部署历史记录不同步,从而中断 CD 流程。
容器化
对软件应用进行容器化可确保其在部署的任何计算机上的行为都相同。这消除了软件在一台计算机上运行但在另一台计算机上的行为不同的一整类问题。容器可以作为 CD 管道的一部分进行集成,这样代码在开发人员计算机上的行为与自动测试和生产部署期间的行为相同。
总而言之…
持续部署可以成为现代工程组织的强大工具。部署是整个“持续管道”的最后一步,包括集成、交付和部署。持续部署的真正体验是自动将代码部署到生产环境、测试正确性、在错误时自动恢复,或者如果正确则接受。
如果您想将持续交付付诸实践,请务必查阅我们的 DevOps CI/CD 教程,该教程深入探讨了 Atlassian 与 Jira 和第三方集成的 Open DevOps。
分享此文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。