持续集成 (CI) 和持续交付 (CD) 通常与 DevOps、DevSecOps、IT 运维人工智能 (AIOps)、GitOps 等相关联。仅仅说您在做 CI 和 CD 是不够的;有一些最佳实践,如果得到良好且持续的应用,将使您的 CI/CD 管道 更加成功。
“最佳实践”一词指的是为了从软件或产品交付等事物中获得最佳结果而应实施或执行的步骤、流程、方法、迭代等。在 CI/CD 中,它还包括为支持设计和部署而配置监控的方式。
部署管道就是一个很好的例子。它包括构建、测试和部署的步骤
- 应用软件
- 系统、服务器和设备
- 配置更新(例如,防火墙)
- 任何其他事物
其目的是通过以下方式自动化部署:
- 使用工具自动化单个任务,从而形成一系列自动化任务(工具链)
- 使用工具编排整个流程或工具链
- 不断扩展和改进工具链
以下是不同部署管道的示例。
应用程序部署管道

(Taz Brown,CC BY-SA 4.0)
服务器配置部署管道

(Taz Brown,CC BY-SA 4.0)
防火墙配置部署管道

(Taz Brown,CC BY-SA 4.0)
数据库 CI 启用管道部署和持续交付的另一个例子是数据库 CI;数据库更改往往会使 CI 复杂化,但通过使用敏捷跨职能团队的数据库持续集成 (DBCI)(包括数据库管理员)、使用“数据库即代码”以及使用面向对象 (OO) 原则重构数据库,可以简化这种情况。
CI/CD 中有各种各样的最佳实践,可以改进您的工作流程和结果。在本文中,我将探讨其中的一些实践。
管道和工具
CI/CD 最佳实践涉及有效的、高效的部署管道和编排工具的结合,例如 Jenkins、GitLab 和 Azure Pipelines。这些工具的好处包括提高速度、降低人为错误风险以及实现自助服务。

Taz Brown,CC BY-SA 4.0
版本控制
使用共享版本控制是一种最佳实践,它为所有团队(例如,开发、质量保证 [QA]、信息安全、运维等)提供单一的事实来源,并将所有工件放在一个存储库中。版本控制也必须是安全的,利用加密存储库、签名签入和职责分离等标准(例如,需要两个人才能提交)。您可以在版本控制中期望获得的一些东西包括

Taz Brown,CC BY-SA 4.0
质量保证和测试
CI/CD 最佳实践也扩展到质量管理。部署管道必须进行测试、测试、再测试,并进行更多测试,以在具有紧迫感和关注恢复速度的情况下减轻缺陷。将您的重点放在与质量相关的原则上,例如
- “左移”测试
- 小批量、频繁发布、从逃逸的缺陷中学习
- 五层安全测试
- 软件与基础设施测试
最佳实践要求测试自动化,以便更快地检测问题,并更快地缓解问题。一些测试包括

Taz Brown,CC BY-SA 4.0
测试应包括代码,特别是代码分析和自动化测试工具。
常见的代码分析工具包括
- 特定于语言
– Python:Pylint 和 Pyflakes
– Java:PMD、Checkstyle
– C++:Cppcheck、Clang-Tidy
– PHP:PHP_CodeSniffer、PHPMD
– Ruby:RuboCop、Reek - 非语言特定
– SonarQube:20 多种语言
– 安全扫描器
– 复杂度分析器
常见的自动化测试工具包括
- 单元测试
– JUnit、NUnit - 功能或性能测试
– HP ALM
– Cucumber
– Selenium - 安全测试
– 渗透测试工具
– 主动分析工具

Taz Brown,CC BY-SA 4.0
测试您自己的流程
团队应坚持不懈地进行 CI,您可以通过回答以下问题来检查您的团队做得如何
- 开发人员是否至少每天签入主干一次?
- 每次签入是否都会触发自动化构建和测试(包括单元测试和回归测试)?
- 如果构建中断或测试失败,是否在几分钟内解决问题?
指标、监控、警报
以下所有内容都应在 CI/CD 管道中自动化和持续进行
- 指标是可以捕获的数据,可用于检测事件(相关事物状态的变化)并了解当前状态和历史记录。
- 监控涉及观察指标以识别感兴趣的事件。
- 警报在事件需要人员采取行动时通知他们。
结合遥测技术,这是一种“高度自动化的通信过程,通过该过程,可以在远程或无法访问的点进行测量并收集其他数据,并将其传输到接收设备以进行监控、显示和记录”,这是一种将持续指标、监控和警报构建到您的 CI/CD 管道中的选择。
价值流和价值流图
在尝试解决问题时,识别价值流然后绘制价值流图可以帮助组织和团队。它还有助于通过将产品或服务从开始一直到客户的活动来为客户建立价值。价值流示例包括
- 软件开发
- 用户支持
- 事件管理

Taz Brown,CC BY-SA 4.0
基础设施即代码
将基础设施视为代码 (IaC) 是一种最佳实践,它为 CI 和 CD 带来了许多好处,例如
- 提供有关应用程序-基础设施依赖项的可见性
- 允许在开发项目的早期在类似生产的环境中进行测试和暂存,从而增强敏捷团队对“完成”的定义
- 了解基础设施比修复更容易构建
– 物理系统:擦除并重新配置
– 虚拟和云:销毁并重建(例如,Netflix 的 Doctor Monkey) - 符合理想的持续性计划,根据 Chef 首席技术官 Adam Jacob 的说法,“使业务能够仅从源代码存储库、应用程序数据备份和裸机资源中重建”
放大反馈
构建放大反馈的能力是另一种 CI/CD 最佳实践。在复杂系统中安全工作的一个系统是
- 以揭示设计和操作错误的方式进行管理
- 蜂拥而至并解决问题,从而快速构建新知识
- 使新的本地知识在全球范围内在整个组织中明确化
- 培养持续创造这些条件的领导者
对失败的响应
围绕响应失败的最佳实践应构建到构建、测试、部署、分析和设计系统中。这不仅是关于考虑应设计、构建和部署哪些失败响应系统;组织或团队将如何响应也应经过深思熟虑并执行。
理想的文化将失败视为一种特性,将其视为学习的机会,而不是追究责任的方式。无责回顾或事后分析是一种最佳实践,它允许团队专注于事实、考虑多种观点、分配行动项并进行学习。
围绕持续集成和交付创建学习和创新文化是另一种最佳实践,这将导致短期的持续实验和改进,以及长期的可持续性、可靠性和稳定性。

Taz Brown,CC BY-SA 4.0
领导者可以通过多种方式为这种文化转变创造必要条件,包括
- 使事后分析不追究责任
- 重视学习和问题解决
- 设定战略改进目标
- 在以下方面教导和指导团队成员
– 问题解决技巧
– 实验技术
– 实践失败
最佳实践包括获胜和失败、快速失败、消除障碍、微调系统、使用流行的工具分解复杂的软件,更重要的是,驱动人们以快速、果断、创造性和创新性的方式响应以解决问题。
这关乎创建一种人们期望更高的文化。这关乎转变您的思维模式,以兑现承诺并以令人愉悦的方式交付价值。
总结
构建 CI/CD 管道是对韧性、毅力、干劲和决心的考验,以便在需要时进行自动化,并在不需要时撤退。这关乎能够做出决定,因为它最符合您的系统、依赖项、团队、客户和组织的利益。
评论已关闭。