ci/cd实践的必要性_8种CI / CD最佳实践,助您成功
ci/cd实践的必要性
持续集成(CI)和持续交付(CD)通常与DevOps,DevSecOps,用于IT运营的人工智能(AIOps),GitOps等相关联。 仅仅说您正在做CI和CD是不够的。 有一些最佳实践,如果使用得当且一致,将使您的CI / CD管道更加成功。
短语“最佳实践”表示应该实施或执行的步骤,过程,方式,迭代等,以从诸如软件或产品交付之类的东西中获得最佳结果。 在CI / CD中,它还包括配置监视以支持设计和部署的方式。
部署管道就是一个很好的例子。 它包括构建,测试和部署的步骤:
- 应用程序软件
- 系统,服务器和设备
- 配置更新(例如,防火墙)
- 还要别的吗
其目的是通过以下方式自动化部署:
- 使用工具来自动化单个任务,从而产生一连串的自动化任务(工具链)
- 使用工具编排整个过程或工具链
- 不断扩展和完善工具链
以下是不同部署管道的示例。
应用程序部署管道
applications_deploymentpipeline.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
服务器配置部署管道
serverconfig_deploymentpipeline.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
防火墙配置部署管道
firewall_deploymentpipeline.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
CI / CD中有多种最佳实践,可以改善您的工作流程和结果。 在本文中,我将探讨其中的一些。
管道和工具
CI / CD最佳实践涉及有效,高效的部署管道和编排工具(例如Jenkins,GitLab和Azure Pipelines)的结合。 这些优点包括提高速度,降低人为错误的风险以及实现自助服务。
Deployment-workflow.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
版本控制
使用共享版本控制是一种最佳实践,它为所有团队提供了一个真实的来源(例如,开发,质量保证[QA],信息安全,运营等),并将所有工件都放在一个存储库中。 版本控制也必须是安全的,利用诸如加密存储库,签名签入和职责分离(例如,需要两个人来提交)之类的标准。 您可能期望在版本控制中包括以下内容:
版本控制
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
质量检查和测试
CI / CD最佳实践也扩展到质量管理。 部署管道必须进行测试,测试,测试和更多测试,以减轻紧迫性并关注恢复速度。 将重点放在与质量相关的原则上,例如:
- “ 左移 ”测试
- 小批量,频繁发布,从逃逸的缺陷中学习
- 五层安全测试
- 软件与基础架构测试
最佳实践要求对测试进行自动化以更快地发现问题,并更快地缓解它们。 一些测试包括:
testing.png
(塔兹·布朗(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 - 安全测试
–渗透测试工具
–主动分析工具
test-workflow.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
测试自己的流程
团队应坚持执行CI,您可以通过回答以下问题来检查团队的绩效:
- 开发人员每天至少要检查一次行李箱吗?
- 每次签入都会触发自动构建和测试(单元和回归)吗?
- 如果构建失败或测试失败,那么几分钟后问题是否解决?
指标,监控,警报
以下所有内容均应在CI / CD管道中自动化且连续进行:
- 指标是可以捕获的数据,对于检测事件(相关事物的状态变化)以及了解当前状态和历史记录很有用。
- 监视涉及观察指标以识别感兴趣的事件。
- 当事件需要他们采取行动时, 警报会通知人们。
集成遥测技术 (一种高度自动化的通信过程,通过该过程可以进行测量并将其他数据收集到远程或无法访问的点,并传输到接收设备进行监视,显示和记录),这是将连续度量,监视和警报构建到其中的一种选择。您的CI / CD管道。
价值流和价值流映射
识别价值流然后进行映射可以帮助组织和团队解决问题。 它还通过将产品或服务从一开始一直传递到客户的活动帮助为客户创造价值。 价值流示例包括:
- 软件开发
- 用户支援
- 事件管理
valuestream.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
基础架构即代码
将基础结构视为代码(IaC)是一种最佳实践,它对CI和CD都有很多好处,例如:
- 提供有关应用程序基础结构依赖性的可见性
- 在开发项目中更早地在类似于生产的环境中进行测试和登台,从而增强敏捷团队对“完成”的定义
- 了解基础架构比修复更容易构建
–物理系统:擦除并重新配置
–虚拟和云:销毁并重新创建(例如Netflix的Doctor Monkey) - 根据Chef首席技术官Adam Jacob的建议,遵循理想的连续性计划,“仅从源代码存储库,应用程序数据备份和裸机资源就可以使业务重建”
扩大反馈
增强反馈能力是另一项CI / CD最佳实践。 在复杂系统中可以安全工作的一种系统是:
- 以揭示设计和操作错误的方式进行管理
- 聚集并解决问题,从而快速构建新知识
- 在整个组织范围内将新的本地知识明确化
- 创造继续保持这些条件的领导者
应对失败
有关响应故障的最佳实践应该内置到构建,测试,部署,分析和设计系统中。 这不仅是要考虑应该设计,构建和部署哪些故障响应系统; 组织或团队的应对方式也应经过深思熟虑并执行。
理想的文化认为失败是特征和学习的机会,而不是一种责备的方式。 无可挑剔的回顾或验尸是使团队专注于事实,考虑多种观点,分配行动项目并学习的最佳实践。
围绕持续集成和交付创建学习和创新文化是另一种最佳实践,它将在短期内导致不断的实验和改进,从长远来看将导致可持续性,可靠性和稳定性。
blaming-learning-culture.png
(塔兹·布朗(Taz Brown), CC BY-SA 4.0 )
领导者可以通过多种方式为这种文化转变创造必要的条件,包括:
- 使验尸无罪
- 重视学习和解决问题
- 制定战略改进目标
- 在以下方面教和指导团队成员:
- 解决问题的能力
–实验技术
–练习失败
最佳实践包括成功与失败,快速失败,消除障碍,微调系统,使用流行工具破坏复杂的软件,更重要的是,促使人们以快速解决问题,果断,富有创造力和创新性的方式做出回应。
这是关于创建人们期望更高的文化。 这是要转变您的思维方式,以兑现承诺并以令人愉悦的方式交付价值。
摘要
建立CI / CD管道是对弹性,持久性,驱动力和毅力的测试,该弹性,持久性,驱动力和毅力可以在需要时自动执行,而在不需要时可以拉回。 之所以能够做出决定,是因为它符合您的系统,依赖项,团队,客户和组织的最大利益。
翻译自: https://opensource.com/article/20/5/cicd-best-practices
ci/cd实践的必要性