CI/CD 管道的一个重要特点是采用自动化技术来确保代码质量。随着软件变更在管道中不断推进,自动化测试会提前发现依赖关系和其他问题,将代码变更推送到不同环境,并将应用程序交付到生产环境。
在这里,自动化的作用是进行质量控制,评估从性能到应用程序编程接口 (API) 使用和安全性等所有方面。此过程有助于确保将所有团队成员所做的变更全面整合并按预期执行。
CI/CD 管道各个阶段的自动执行能力可帮助开发团队提高质量、提升工作效率并改善其他 DevOps 指标。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
CI/CD 管道是指敏捷的 DevOps 工作流,而 CI/CD 表示持续集成和持续交付的组合实践。
CI/CD 创建了一种更快、更精确的方式将不同人员的工作整合成一个内聚产品。在 DevOps 环境中,CI/CD 简化了应用程序编码、测试和部署流程。这种方法为团队提供了一个单一的存储库来存储工作成果,并提供自动化工具来整合和测试代码,以确保其稳定运行。
CI/CD 管道让 DevOps 团队可以协同、实时地编写代码、集成代码、运行测试、交付版本并部署软件变更。除软件发布自动化(从初始测试到最终部署)这一重要优势外,CI/CD 管道的其他优点还包括:
CI/CD 管道由 3 个相互关联的方法组成:
CI/CD 流程始于持续集成 (CI),开发人员将代码提交到由版本控制系统 (VCS) 管理的中央存储库。CI 支持开发人员独立工作,创建自己的编码“分支”来实施小规模变更。
开发人员在工作时,可以对源代码进行快照,通常是在 Git 等版本控制工具中进行。然后开发人员便可自由开发新功能;如果出现问题,Git 可以迅速将代码库恢复到之前的状态。
然后,个人的工作成果被推送到自动化系统中,系统使用脚本来构建并测试代码变更。自动化构建阶段结束后,CI 服务器会将源代码变更编译到共享源代码存储库的主分支代码(即主干)中。
传统模式下,开发团队各自独立编写代码、每月向主分支代码提交一次,这可能会导致错误修复工作繁重,版本控制效果较差;CI/CD 开发流程允许团队更频繁地提交代码变更。这种持续测试模式可以更快地修复错误,有助于确保功能正常运行,并最终优化协作,提高软件质量。
管道中的下一步是持续交付 (CD),该环节将持续集成阶段经过验证的代码变更分发至选定的环境或代码存储库(例如 GitHub)中。在这一环节中,运营团队可以将它们部署到实时生产环境中。
通过自动化流程对软件和 API 进行测试,并解决各种报错。在 CD 流程的最后一步,DevOps 团队会收到有关最新构建版本的通知,然后手动将其发送到部署阶段。
持续交付管道阶段的目标是以最小的工作量部署新代码,但仍然允许进行一定程度的人工监督。
CI/CD 流程中的 CD 还表示持续部署。持续部署在通过一系列预定义测试后自动将代码更改发布给最终用户,例如在模仿环境中测试代码的集成测试,以帮助确保代码完整性。
持续交付和持续部署都会处理比 CI 更进一步的自动化,并且通常可以互换使用。
持续交付和持续部署之间的区别在于软件或应用程序发布所使用的自动化程度。在持续交付中,代码会自动移动到类似生产的环境中,以进行进一步的测试和质量保证,例如评估风险和识别源代码漏洞。测试成功后,需要人工干预才能移动到生产环境。
在持续部署中,自动化走得更远。一旦代码通过测试,就会自动部署到生产中,无需人工审批。
组织如何应用 CI/CD 管道,并决定采用持续交付还是持续部署,取决于其业务需求。持续部署最适合开发生命周期快的 DevOps 团队,例如构建电商网站和软件即服务 (SaaS) 平台的团队。
持续部署为软件发布流程提供支持,让团队能够经常并尽快发布全新版本或更新的软件。由于变更会自动部署到公共领域,因此这类持续部署管道通常只有拥有成熟流程的 DevOps 团队会使用。
对于工作流中可能不需要频繁发布更新的团队(例如构建医疗保健应用程序的团队),持续交付通常是首选方案。持续交付速度较慢,但多一层监督,有助于确保最终用户可正常使用功能。
如需深入了解持续交付和持续部署之间的区别,请观看此视频。
机器学习管道是一系列互连的数据处理和建模步骤,旨在自动化、标准化和简化构建、训练、评估和部署机器学习模型的过程。
机器学习管道是机器学习 (ML) 系统开发和生产中的重要组件。此外,由于大数据和人工智能 (AI) 的发展,机器学习管道变得越来越重要。
据 Kings Research 报道,2023 年全球机器学习市场规模达到 260.6 亿美元,预计将从 2024 年的 354.4 亿美元增长至 2031 年的 3288.9 亿美元,预测期内年复合增长率为 37.47%。1
机器学习管道与 DevOps 实践相集成,实现了机器学习模型的 CI/CD。该集成被称为机器学习运营(或 MLOps),可帮助数据科学团队有效管理 ML 编排管理的复杂性。
从源代码到生产,以下阶段构成了 CI/CD 管道的开发生命周期和工作流:
该阶段属于持续集成流程,涉及代码的创建和编译。团队协作构建源代码并整合新代码,同时快速确定任何问题或冲突。
在该阶段,团队将测试代码。持续交付和持续部署中都会进行自动化测试。这些测试环境可能包括整合测试、单元测试和回归测试。
在该阶段,批准的代码将发送到生产环境。在持续部署中,该阶段自动执行;而在持续交付中,须经开发人员批准后才会自动执行。
最后,部署变更并将最终产品投入生产。在持续交付中,产品或代码将发送到存储库,并在人工批准后进入生产环境或部署上线。在持续部署中,该步骤自动执行。
选择 CI/CD 工具时,应重点关注软件开发流程的优化和自动化。高效的 CI/CD 管道使用开源工具进行集成、测试和部署。正确配置 CI/CD 流程也会影响软件开发管道的成功。
最常见的开源 CI/CD 工具是 Jenkins。Jenkins 是一款用 Java 编写的自动化 CI 服务器,用于自动执行 CI/CD 步骤和报告。其他可用于集成的开源工具还包括 Travis CI 和 CircleCI。
除开源工具外,所有主要的云服务提供商——Google Cloud、IBM® Cloud、Microsoft Azure 和 Amazon Web Services (AWS)——都提供基于云的 CI/CD 工具链、管道和工具集成功能。
GitHub 或 AWS CodeCommit 等集成开发环境 (IDE) 可帮助开发人员创建、维护和跟踪软件包。与此同时,GitLab 等平台试图在一个配套其他工具的综合平台中提供 IDE。
在云环境中运营时,云原生 DevOps 团队使用 Docker 等容器打包和分发应用程序,还会使用 Kubernetes 等容器编排工具。虽然 Kubernetes 并非严格意义上的 CI/CD 管道,但它在许多 CI/CD 工作流中都有应用。
CI/CD 安全性侧重于在整个 CI/CD 管道中实施和管理安全和合规措施的实践、流程和技术。
过去,安全性是在开发周期结束时“追加”到软件上的。随着云平台、微服务和容器的发展,传统的开发方法出现了瓶颈。
随着开发人员采用敏捷开发和 DevOps 实践,安全性能已跟不上如此快速的发布节奏,这促进了 DevSecOps(表示开发、安全和运营)理念的发展。DevSecOps 可在安全工具和安全实践嵌入持续集成 (CI) 和持续交付 (CD) 管道的过程中,自动完成二者的集成。
DevSecOps 实践包括左移和右移测试。左移测试涉及在软件开发生命周期 (SDLC) 的更早阶段就集成安全测试和其他关键开发实践。右移测试涉及开发后期进行测试,通常在生产环境中进行。两种测试互为补充,将测试责任分散到 SDLC 各个阶段。
利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。
使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。