极狐GitLab 是一个一体化的 DevOps 平台,内置 CI/CD 功能。从 16.x 开始,极狐GitLab 开始推出了两个关于 CI/CD 的重磅功能——CI/CD 组件 & CI/CD 目录。本文带你了解在 CI/CD 流水线中使用 CI/CD 组件的主要好处以及如何实现这些好处。
在这篇博文中,我们将深入探讨极狐GitLab 的 CI/CD 组件在彻底改变 CI/CD 工作流程方面的强大功能。 我们还将介绍极狐GitLab CI/CD 生态系统的未来,包括已经发布的 CI/CD 目录,这是一个包含这些组件集合的框架。 通过这些举措,极狐GitLab 在简化流水线配置和增强可重用性方面迈出了重要一步。
CI/CD 组件
在 GitLab 16.1 中,我们引入了一个令人兴奋的实验功能—— CI/CD 组件。 CI/CD 组件是可重用的单一用途的流水线构建块,可抽象出流水线配置单元。
通过利用 CI/CD 组件的强大功能,用户可以释放几个关键优势:
在之前的博客文章中,我们讨论了前两点的主要好处(也可用于 CI/CD 模板),但现在让我们更深入地研究组件以及它们如何彻底改变您构建流水线的方式。
测试 CI/CD 组件
随着软件开发的不断发展,确保代码组件的可靠性和高质量变得越来越重要。
使用组件的主要好处之一是能够在软件正式发布之前彻底测试组件,从而实现更强大和简化的开发过程。 在我们的上下文中,已发布的组件是版本化的,并将遵循结构化语法,从而允许在流水线内无缝集成。
include:
- components: /path/to/project@<version>
我们的 CI/CD 组件的独特优势之一是它们提供的灵活性。 DevSecOps 团队可以通过附加 @commit_SHA 来选择“非官方”版本,从而允许他们在发布正式版本之前对其代码进行试验和迭代。
include:
- components: /path/to/project@<commit_SHA>
要使组件成为正式版本,用户必须对其进行标记,本质上是创建版本化快照。 然后,标记的版本将在我们完整的 CI/CD 目录中提供,使用户可以轻松访问一系列经过彻底测试和批准的组件。 为了确保 CI/CD 组件的稳定性和可靠性,对它们进行彻底测试至关重要。 DevSecOps 团队可以通过利用 commit_SHA 标识符来运行全面的测试,从而利用我们流水线的强大功能。 如果流水线成功通过所有测试,它们就可以继续标记该组件,表明其已准备好发布。
通过根据标记版本配置发布作业,DevSecOps 团队可以放心地将官方组件合并到他们的项目中,因为知道它已经经过测试和验证。
版本控制和标记
如上一节所述,DevSecOps 团队可以利用 @version 或 @commit_SHA 来引用其流水线中的组件。 引用组件的另一种选择是利用@latest。
include:
- components: /path/to/project@latest
这将使用最新的官方(已标记)可用组件。 当在流水线中与可靠的测试结合使用时,您可以保证流水线中使用的组件始终经过测试和验证。
CI/CD 目录
CI/CD 目录将允许用户搜索、查找和了解如何使用整个组织中可用的组件,为他们设置一个框架来协作构建流水线,以便随着时间的推移不断发展和改进。
测试组件
在极狐GitLab,我们相信最好的测试就是用自己的产品进行产品研发,也就是传说中的 dogfooding 文化。 为了展示 CI/CD 组件的强大功能和实用性,我们将一些极狐GitLab 模板转换为组件,并要求我们的内部团队使用它们并提供额外的反馈。 通过这样做,我们在现实场景中积极使用和测试组件,发现见解并不断改进其功能。 在这个小组中,我们将代码质量、容器扫描和 SAST 模板转换为 CI/CD 组件,并要求内部团队使用它们。
通过这个测试过程,我们不仅验证了 CI/CD 组件的有效性,而且还获得了宝贵的经验和反馈,以完善和增强我们的产品。 这证明了我们致力于为用户提供实用且可靠的解决方案。
呼吁采取行动
CI/CD 组件目录目前处于实验阶段,因此我们建议目前不要在生产环境中使用它。 对其进行更改的可能性很高。 我们目前正在努力重新组织组件的文件夹结构,为 CI/CD 目录的启动做准备。
下一步
极狐GitLab 的 CI/CD 组件目录及其随附的 CI/CD 组件功能正在开创简化流水线配置的新时代。 通过采用可重用性、抽象性、输入灵活性、版本控制和集中式目录,开发人员可以构建高效、适应性强且可维护的 CI/CD 工作流程。 CI/CD 组件目录使团队能够加速软件交付、有效协作并充分利用极狐GitLab CI/CD 功能的潜力。
关于极狐GitLab CI/CD 组件和目录的使用可以查看过往的技术文章:极狐GitLab CI/CD Component & Catalog 功能揭秘。