CI/CD 典型工具链

在 CI/CD 工程实施中,Jenkins 和 Gitlab 已成为流程中的核心工具,其中 Jenkins 。现如今的 CI/CD 中,集合容器技术、镜像仓库、容器编排系统等各类工具链,已成为企业、各类组织效率提升必不可少的基础支撑。

图:CI/CD 典型工具链

目前,CI/CD 典型的工具链包括持续集成、持续交付、持续部署与基础工具类。

基础工具

Jenkins 是一个被广泛使用的可扩展的持续集引擎,提供了数以百计的插件来支持自动化构建、测试、部署相关的各类任务,Jenkins 在2.0版本中提供的流水线即代码(Pipeline as Code) 能力。贯穿于 CI/CD 整个过程,将原本独立运行与单个或多个节点的任务串联起来,从而实现单个任务难以完成的复杂发布流程。

Prometheus 是新一代的云原生监控系统,它是一个开源的完整监控解决方案,对传统的监控系统测试、告警模型进行了彻底颠覆的重新设计,形成了基于中央化的规则计算、统一分析和告警的新一模型。

为了实现统一的用户管理和权限管理,我们需要引入一套统一的用户管理系统,OpenLDAP 则是目前较为广泛应用的系统。

持续集成

典型的源码管理工具是 Gitlab,同时也可以完成代码评审等工作。

代码构建根据编程语言不同而不同,譬如 Java 构建工具包括 Maven、Gradle。单元测试框架 如 JUnit、TestNG等。

制品仓库代表性产品为 Nexus,Nexus 可以支持多种私有仓库,包括 maven、nuget、docker、npm、bower、pypi、rubygems、go等。

镜像仓库目前使用最广泛的 是VMware 开源的 Harbor。Harbor 是一个用于存储和镜像分发的企业级镜像服务端软件,它添加了很多企业必须的功能特性,例如安全、标识和管理等。

代码质量管理使用最广泛的开源工具是SonarQube, 它可以用代码风格、缺陷、漏洞、以及安全热点等几个维度对源代码进行扫码和分析。

持续交付

接口测试可以使用 Python编写的功能自动化测试框架 RobotFramework,它具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端和接口,也可以进行分布式测试。

性能测试类工具可以使用 Java 开发的 JMeter,它可以对服务器、网络、或者对象模拟请求负载来测试他们的强度或者分析不同压力下整体性能。

持续部署

使用 Kebernetes 的配置功能(configmap、Secret)做配置管理。

可以使用 Helm 打包应用,管理应用的依赖关系,管理应用版本并发布应用到软件仓库。

Operator 是基于 Kebernetes 编写的也定应用程序控制器,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator 是将运维人员对软件操作代码化,同时利用 Kebernetes 强大的抽象来实现应用的生命周期管理。

Last Updated:
Contributors: isno