免费好用的 CI/CD 工具有哪些?

news2024/12/25 14:52:35

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。

CI/CD 已经成为落地 DevOps 的最佳实践手段,这一点,业界已经达成了共识,而且很多企业都在搭建企业内部的 CI/CD 系统上面花费了大量的精力和功夫,而业界也围绕 CI/CD 产生了很多工具链。下面是一些好用的 CI/CD 工具详解。

Top 1:Jenkins

排行榜首位非 Jenkins 莫属。Jenkins 的前身是诞生于 2005年Sun Microsystems公司开发的Hudson项目,距今已经有19年历史了,堪称 CI/CD 领域的“活化石”。Jenkins 在国内有很多用户,根据中国信通院发布的中国 DevOps 现状调研报告(2021、2022、2023)显示,Jenkins 在持续集成/持续交付中的使用占比,始终位居第一,使用率分别为 64.20%(2021年)、28.88%(2022年)以及12.64%(2023年),均高于第二名多个百分点。

Jenkins 如此受欢迎的原因有以下两点:

  • 开源免费:Jenkins 是一款开源软件,用户可以自行下载安装使用;
  • 插件机制:Jenkins 是通过插件来提供丰富多样的功能,当前的插件中心已经有超千款插件;

当然,Jenkins 也有其不足的地方:

  • 插件过多:Jenkins的插件是优势也是劣势。因为插件机制灵活,所以有很多用户会自己开发插件,并推送到插件中心,就容易导致有很多插件的更新不及时,甚至有些插件已经好几年不更新,存在安全风险;
  • 没有企业服务:Jenkins 在国内没有原厂服务,出现问题以后只能自己解决(查找文档、求助别人),问题解决时效性无法保证。

另外,Jenkins 只有 CI/CD 功能,没有代码托管功能,意味着它必须要和其他 SCM 工具,比如 GitHub/GitLab 进行集成才可以。

Top2:GitLab CI

GitLab 是全球知名的代码托管平台,在国内有数百万用户。GitLab CI 是其持续集成/持续交付能力,也就是说 GitLab 除了源代码托管,还有 CI/CD,是一个一体化的平台。前面提到了信通院发布的中国 DevOps 现状报告中,Jenkins 是使用率排名第一的工具,而排名第二的就是 GitLab CI 了。其使用率在 2021年为 8.86%;2022年为 7.05%。

GitLab CI 在国内用户众多的原因如下:

  • 开源免费:GitLab 也是一款开源软件,用户可以免费使用;
  • 私有化部署:国内企业往往都比较喜欢能够私有化部署的软件,这样可以更加“自主可控”,而 GitLab 正好能满足这一点,只需要一个命令就能安装好 GitLab,然后使用源代码托管和 CI/CD;

之前,国内用户只能去 about.gitlab.com/install 网站上去下载 GitLab 安装包,由于 GitLab 资源都托管在国外,所以下载体验不是特别好,另外 GitLab 的文档、官网均是英文的,对于很多国内开发者来说也存在一定挑战。

在这里插入图片描述

2021 年,以 GitLab 为上游的极狐(GitLab)成立,专门面向国内用户提供同等功能的极狐GitLab:https://dl.gitlab.cn/096ezxxi 版本(JH 版本)。极狐GitLab 版本除了做很多汉化工作外,还开发了许多与中国企业密切相关的功能,比如和飞书、钉钉、企微的集成等。另外,极狐GitLab 的所有资源都在国内,所以下载体验不错,不管是哪种方式(Omnibus、docker、Helm Chart、Operator)都可以在 https://dl.gitlab.cn/ov43wn91 下载安装。当然,也有中文文档 https://dl.gitlab.cn/xdrgyl21。

Top3 GitHub Action

GitHub Action 是 GitHub 在 2018年推出的 CI/CD 功能,和 GitLab 一样,也是通过配置 YAML 进行流水线的编写。只不过不同的是 GitHub Action 采取的是 Action marketplace 策略,用户可以在 marketplace 中查找适合自己的 Action 来完成流水线的编写。

name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g bats
      - run: bats -v

GitHub Action 的优缺点也比较明显。优点是 GitHub 本身就是源代码托管平台,加上 Action 的 CI/CD 功能,用户可以在一个平台上就能完成软件编写和交付,不用重复构建工具链,另外 Action marketplace 机制也让流水线的编写变得高效、简单;缺点是:GitHub 的服务器在国外,国内访问有网络问题,就导致不管是源代码托管还是 CI/CD 体验不是很好,另外 GitHub 不能私有化部署、在国内原厂服务、文档资料以英文为主,对于国内喜欢私有化部署的企业来讲不是一个好的选择。

Top4 Tekton

随着云原生的兴起,基于云原生架构的 CI/CD 工具也在涌现,这里面比较典型的就是 Tekton。Tekton 的前身是 Knative 项目中的一部分——build-pipeline 项目,随后由由 Google 在 2018 开源。Tekton 通过定义 CRD(自定义资源定义)让用户灵活定义流水线。Tekton 有多个组件,包括 Tekton pipeline、Tekton triggers、Tekton CLI、Tekton Dashboard、Tekton Catalog 和 Tekton Hub 等。

在这里插入图片描述

Tekton 也各有优劣,优势在于非常灵活,用户可以通过自定义 Task 来完成 Pipeline 的编写。不足点在于有上手成本。首先需要用户去了解 Task、TaskRun、Pipeline、PipelineRun 等概念和 YAML 文件的编写。比如下面的一个 taskrun demo:

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: build-docker-image-run
spec:
  serviceAccountName: tekton-service
  taskRef:
    name: build-docker-image
  resources:
    inputs:
      - name: src
        resourceRef:
          name: apim-repo
    outputs:
      - name: image
        resourceRef:
          name: apim-image
  params:
    - name: pathToDockerFile
      value: "/workspace/src"
    - name: pathToContext
      value: "/workspace/src"
    - name: imageTag
      value: v0.0.1

所以,对于熟悉云原生、熟悉 YAML 配置的开发者来说,tekton 是一种好用的 CI/CD 工具,要是不熟悉的人员,可能需要一定的学习成本。

Top5 ArgoCD

ArgoCD 是随着云原生火热发展而兴起的一款 CI/CD 工具,主要为云原生应用实现持续交付,官方定义是:声明式且面向 Kubernetes 应用的持续交付工具。

在这里插入图片描述

ArgoCD 是实践 GitOps 的常用工具之一(另外一个是 Flux 和极狐GitLab 的 Kubernetes Agent Server,最新版本中,极狐GitLab 也已经全面转向 Flux)。GitOps 强调对于云原生应用程序或者基础设施的变更都应该在 Git 端发起,然后利用云原生的声明式机制,变更能够自动同步到目标集群。

当然 ArgoCD 的优缺点也比较明显,优点是通过实践 GitOps 让云原生应用程序的交付和运维变得简单起来,但是缺点就是只能做 CD,也就是持续交付,没有办法做 CI,要想实现 CI,必须要依托具有源代码托管功能的工具,比如和极狐GitLab:https://dl.gitlab.cn/ytjnecto 结合就能实现完整的 CI/CD。

其他还有常用的 Circle CI、Jenkins X 等,但是和前面这几位比起来,在使用率上明显就要逊色一些。

学习极狐GitLab 的相关资料:

  1. 极狐GitLab 官网:https://gitlab.cn
  2. 极狐GitLab 官网文档:https://docs.gitlab.cn
  3. 极狐GitLab 论坛:https://forum.gitlab.cn/
  4. 极狐GitLab 安装配置:https://gitlab.cn/install
  5. 极狐GitLab 资源中心:https://resources.gitlab.cn/
  6. AI 产品驭码CodeRider:https://coderider.gitlab.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

V.PS日本东京VPS详细测评

V.PS日本VPS怎么样?V.PS日本机房怎么样? V.PS在日本有东京和大阪两个机房都在运作VPS/云服务器,大阪机房的默认接入IIJ网络,日本东京机房的是日本软银网络,另外日本东京分两个系列,一个是Intel另外一个是AM…

【文件fd】深入理解重定向和缓冲区

目录 1.重定向 1.1dup2 2.缓冲区 2.1什么是缓冲区 2.2为什么存在缓冲区 2.3缓冲区的刷新策略 2.4查看源码​ 3.0/1/2 3.1 0/1/2是什么&为什么存在 3.2 2和1区别 3.3 2为什么存在 1.重定向 重定向的本质:是在内核中改变文件描述符表特定下标的内容和…

Flutter 插件之http(介绍、使用、二次封装)

背景 在我们日常开发过程中,经常会使用到网络请求,而在Flutter插件中,最常用的请求插件一共两个,分别是: 1、dio 2、http 其中dio我已经做过详细介绍了(post、get等请求、文件上传、请求重试等),这里就不做过多阐述,下面附上文章链接,如有需要可前往查看。 http…

「11月·西安」第十二届信息系统与计算技术国际会议(ISCTech 2024)

随着信息技术的飞速发展,信息系统与计算技术已成为推动社会进步与产业升级的重要力量。在这样的背景下,第十二届信息系统与计算技术国际会议(ISCTech 2024)的召开,无疑为全球专家学者搭建了一个交流思想、共享成果的高…

ProfiNet 转 CAN/CANopen 网关

一、功能概述 1.1 设备简介 本产品是 PN(Profinet)和 COE(CANopen)/CAN(自由口)网关,使用数据映射 方式工作。 本产品在 PN 侧作为 PN IO 从站,接西门子 PLC;在 COE 侧做为 COE 主站, 接 COE 设备,如伺服、变频器、…

漏洞挖掘 | edusrc记一次某中学小程序渗透测试

一、搜集渗透目标 现在的EDU挖web端的上分效率远不如小程序,因此这篇文章浅浅记录一次小程序的挖掘吧。如果各位大牛想要快速出洞,不妨跳过大学,学院等小程序,而重点关注小学、中学、幼儿园等,这些小程序的出洞率还是…

第L3周:机器学习|逻辑回归

本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子深度学习第J6周:ResNeXt-50实战解析 1.逻辑回归定义 逻辑回归(Logistic Re…

hive udf去掉map中的一个或者多个key

实现一个hive udf,可以将Map中的某一个或者多个key去掉,这里要继承GenericUDF 这个抽象类,然后Override evaluate这个函数即可,可以把执行这个udf前初始化的一些内容放在initialize方法内,比如参数的判断,函数的返回值类型等等。 代码写好之后,可以用如下方法创建这个函…

Golang之OpenGL(一)

使用OpenGL实现窗口中绘制三角形(纯色|彩色)、正方形(变色) 一、简单实现窗口绘制三角形二、绘制的多颜色三角形(基于 ‘ 简单实现窗口绘制三角形 ’ )1、在顶点着色器和片段着色器中添加了颜色的输入和输出…

【考研高数】反函数的那些事

在这里给同学们推荐来自「荒原之梦考研数学」网的三篇文章,分别是反函数的性质汇总,以及两道相关习题,有需要加强这部分练习的同学,可以长按下方二维码,在「荒原之梦考研数学」官网中打开对应的文章: 《反…

基于单片机的防火防盗报警系统设计

摘要: 该多功能防火防盗系统既具有根据环境温度和烟雾浓度进行火灾检测的功能,也有能对人体检测实现防盗的功能。多功能智能防火防盗控制系统的主控制器是 STC89C52 单片机,环境温度的检测采用 DS18B20 , MQ2 检测烟雾浓度&…

利用canvas 实现图片的标注,把标注像素点传入到后端

背景:我们有一个摄像的产品,拍照传统的水表盘面,我们需要框选水表读数,标注点传到后端,后端根据标注点自动去截取摄像表拍摄回来的图片,然后拿到大模型里面进行训练。由于同一只表拍摄的画面都是一样的&…

C语言之指针函数与函数指针

目录 1 前言2 函数指针与指针函数理解与区分函数指针指针函数 3 函数指针与指针函数常见用法函数指针指针函数 4 总结 1 前言 项目中时常遇到指正函数与函数指正的使用,时间一长容易出现概念混淆。 2 函数指针与指针函数理解与区分 函数指针 原型:返回…

React 项目中如何使用 easyPlayer-pro.js

目录 背景EasyPlayer.js H5播放器简单介绍EasyPlayer.js 简介EasyPlayer.js 功能说明:配置属性事件回调方法 下载 EasyPlayer.js引入使用重写webpack问题处理证清白最后 背景 项目中要使用 easyplayer-pro.js 播放视频,查了下资料,网上基本都…

Axure在数据可视化原型设计中的革新力量

在数据洪流与信息爆炸的当下,产品设计不再局限于界面的美观与功能的堆砌,而是更多地聚焦于如何高效地呈现与解读数据。Axure RP,作为原型设计领域的璀璨明星,正以其独特的魅力,引领着数据可视化原型设计的新风尚。本文…

【云原生】数据库忘记密码怎么办?

相信很多人都会遇到在虚拟机中忘记数据库密码的情况,想必大家都很苦恼,所以今天给大家来讲讲数据库忘记密码了如何修改密码再登录数据库!!! 1、关闭数据库服务 systemctl stop mariadb 2、执行MySQL 服务器在启动时跳…

【LeetCode】146.LRU页面置换

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

C++ string类(你想要的这里都有)

1. string类概述 C语言中&#xff0c;字符串是以“\0”结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需要用户管理&#…

Javaweb项目|ssm基于web的健身中心管理系统的的设计与实现jsp

收藏点赞不迷路 关注作者有好处 文末获取源码 一、系统展示 二、万字文档展示 基于ssm基于web的健身中心管理系统的的设计与实现jsp 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringSpringMVCMyBatisVue 工具&#xff1a;IDEA/Ecilpse、Navicat、…

HTTP常见的请求方法、响应状态码、接口规范介绍

常见的请求方法 GET&#xff08;查询&#xff0c;从服务器获取资源&#xff09;POST&#xff08;新增&#xff0c;在服务器创建资源&#xff09;PUT&#xff08;修改&#xff0c;在服务器更新资源&#xff09;DELETE&#xff08;删除&#xff0c;从服务器删除资源&#xff09;…