持续集成,持续交付和持续部署的概念,以及GitLab CI / CD的介绍

news2024/9/23 11:18:17

引言:上一期我们部署好了gitlab极狐网页版,今天我们介绍一下GitLabCI / CD

目录

一、为什么要 CI / CD 方法

1、持续集成

2、持续交付

3、持续部署

二、GitLab CI / CD简介

三、GitLab CI / CD 的工作原理

4、基本CI / CD工作流程

5、首次设置 GitLab CI / CD

6、GitLab CI / CD功能集

一、为什么要 CI / CD 方法

        软件开发的连续方法基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预。

        它涉及在每次小迭代中不断构建,测试和部署代码更改,从而减少基于有缺陷或失败的先前版本开发新代码的机会。

        这种方法有三种主要方法,每种方法都根据最适合您的策略进行应用。

        持续集成(Continuous Integration, CI): 代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈。

        持续部署(Continuous Deployment, CD): 部署到测试环境、预生产环境、生成环境。 

        持续发布(Continuous Delivery, CD): 将最终产品发布到生成环境、给用户使用。

img

1、持续集成
持续整合icon-default.png?t=N7T8https://en.wikipedia.org/wiki/Continuous_integration

        考虑一个应用程序,其代码存储在GitLab中的Git存储库中。开发人员每天多次推送代码更改。对于每次推送到存储库,您都可以创建一组脚本来自动构建和测试应用程序,从而减少向应用程序引入错误的可能性。

        持续整合对于提交给应用程序的每个更改 - 甚至是开发分支 - 它都是自动且连续地构建和测试的,确保所引入的更改通过您为应用程序建立的所有测试,指南和代码合规性标准。

GitLab本身就是使用持续集成作为软件开发方法的一个例子。对于项目的每次推送,都会有一组脚本来检查代码。

2、持续交付

           持续交付icon-default.png?t=N7T8https://continuousdelivery.com/

        持续交付是持续集成的一个步骤。您的应用程序不仅在推送到代码库的每个代码更改时都构建和测试,而且,作为一个额外的步骤,它也会连续部署,尽管部署是手动触发的。

        此方法可确保自动检查代码,但需要人工干预才能手动并策略性地触发更改的部署。

3、持续部署

持续部署icon-default.png?t=N7T8https://www.airpair.com/continuous-deployment/posts/continuous-deployment-for-practical-people

        它也是持续集成的又一步,类似于持续交付。不同之处在于,您不必手动部署应用程序,而是将其设置为自动部署。完全不需要人工干预就可以部署您的应用程序。

二、GitLab CI / CD简介

        GitLab CI / CD是GitLab内置的强大工具,允许您将所有连续方法(持续集成,交付和部署)应用于您的软件,而无需第三方应用程序或集成。

三、GitLab CI / CD 的工作原理

        要使用GitLab CI / CD,您只需要一个托管在Git存储库中的应用程序代码库,并在一个名为的文件中指定构建,测试和部署脚本,该文件.gitlab-ci.yml位于存储库的根路径中。

        在此文件中,您可以定义要运行的脚本,定义包含和缓存依赖项,选择要按顺序运行的命令以及要并行运行的命令,定义要部署应用程序的位置,以及指定是否将要自动运行脚本或手动触发任何脚本。熟悉GitLab CI / CD后,您可以在配置文件中添加更多高级步骤。

        要向该文件添加脚本,您需要按照适合您的应用程序的顺序组织它们,并且这些脚本符合您希望执行的测试。要想象可视化过程,请假设您添加到配置文件中的所有脚本与您在计算机终端上运行的命令相同。

        将.gitlab-ci.yml配置文件添加到存储库后,GitLab将检测到它并使用名为GitLab Runner的工具运行脚本,该工具与终端类似。

        脚本被分组到作业中,它们一起组成一个管道.gitlab-ci.yml文件的极简主义示例可以包含:

before_script:
  - apt-get install rubygems ruby-dev -y
​
run-test:
  script:
    - ruby --version

        该before_script属性将在运行任何内容之前为您的应用程序安装依赖项,并且调用 的 作业run-test将打印当前系统的Ruby版本。它们都构成了在每次推送到存储库的任何分支时触发的管道

        GitLab CI / CD不仅可以执行您设置的作业,还可以显示执行过程中发生的情况,如您在终端中看到的那样:

工作运行

        您可以为应用创建策略,GitLab会根据您定义的内容为您运行管道。您的管道状态也由GitLab显示:

管道状态

最后,如果出现任何问题,您可以轻松 回滚所有更改:

回滚按钮

4、基本CI / CD工作流程

        这是GitLab CI / CD如何适用于通用开发工作流程的一个非常简单的示例。

        假设您已在一个问题中讨论过代码实现,并在本地处理您提出的更改。将提交推送到GitLab中远程存储库中的功能分支后,将触发为项目设置的CI / CD管道。通过这样做,GitLab CI / CD:

  • 运行自动脚本(顺序或并行)到:

    • 构建并测试您的应用。

    • 使用“评论应用”预览每个合并请求的更改,如您所见localhost

        一旦您对实施感到满意:

  • 让您的代码经过审核和批准。

  • 将功能分支合并到默认分支。

    • GitLab CI / CD会自动将更改部署到生产环境中。

  • 最后,如果出现问题,您和您的团队可以轻松地将其回滚。

GitLab工作流程示例

        GitLab CI / CD能够做得更多,但这个工作流程体现了GitLab跟踪整个过程的能力,而无需任何外部工具来交付您的软件。而且,最有用的是,您可以通过GitLab UI可视化所有步骤。

5、首次设置 GitLab CI / CD

        要开始使用GitLab CI / CD,您需要熟悉.gitlab-ci.yml配置文件语法及其属性。

        本文档介绍了GitLab CI / CD在GitLab页面范围内的概念,用于部署静态网站。虽然它适用于想要从头开始编写自己的Pages脚本的用户,但它也可以作为GitLab CI / CD设置过程的介绍。它涵盖了编写CI / CD配置文件的第一个常规步骤,因此我们建议您通读它以了解GitLab的CI / CD逻辑,并了解如何为任何应用程序编写自己的脚本(或调整现有脚本)。

        有关GitLab的CI / CD配置选项的深入视图,请查看 .gitlab-ci.yml完整参考。

6、GitLab CI / CD功能集

  • 使用Auto DevOps轻松设置应用程序的整个生命周期。

  • 使用GitLab Pages部署静态网站。

  • 将您的应用程序部署到不同的环境。

  • 使用Review Apps预览每个合并请求的更改。

  • 使用Container Registry开发安全的私有Docker镜像。

  • 安装自己的GitLab Runner。

  • 安排管道。

  • 使用安全测试报告检查应用程序漏洞。

希望能够帮助到大家!!

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

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

相关文章

如何在Python中创建动态图形?

动态图形是使可视化更具吸引力和用户吸引力的好方法。它帮助我们以有意义的方式展示数据可视化。Python帮助我们使用现有强大的Python库创建动态图形可视化。Matplotlib是一个非常流行的数据可视化库,通常用于数据的图形表示,也用于使用内置函数的动态图…

springboot212球队训练信息管理系统

球队训练信息管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装球队训练信息管理系统软件…

Bert-VITS-2 效果挺好的声音克隆工具

持中日英三语训练和推理。内置干声分离,切割和标注工具,开箱即用。请点下载量右边的符号查看镜像所对应的具体版本号。 教程地址: sjj​​​​​​​CodeWithGPU | 能复现才是好算法CodeWithGPU | GitHub AI算法复现社区,能复现…

2024.02.24 跑步打卡第 6 天

能受天磨真铁汉,不遭人嫉是庸才 2024.02.24 跑步打卡第 6 天

【Vuforia+Unity】AR07-实现识别条码、二维码内容功能(Barcode Scanner)

Barcode Scanner in Unity | Vuforia Library官方教程,写的很详细,本教程主要参考对象! 主要实现扫描生活中常见的二维码,然后弹出二维码链接,当然我们也可以再次回调自定义函数,弹出数字内容,AR内容效果! 支持的二维码: 局限性 条码扫描组件还定义检测和跟踪的条形…

Docker Container(容器)

"在哪里走散,你都会找到我~" Docker 容器 什么是容器? 通俗来讲,容器是镜像运行的实体。我们对于镜像的认知是,“存储在磁盘上的只读文件”。当我们启动一个容器的本质,就是启动一个进程,即容器…

K线实战分析系列之五:刺透形态——多方反攻信号

K线实战分析系列之五:刺透形态——多方反攻信号 一、刺透形态二、类似刺透形态三、刺透形态的总结 一、刺透形态 阴线在前,阳线在后显示市场曾经跌到了低位,但是在盘中又将价格收回,并且多方收复了前一天大部分的失地 二、类似刺…

计算机设计大赛 深度学习卷积神经网络的花卉识别

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…

ES通用查询页面使用说明

前言:ES语法比较复杂,需要专门的学习,而且查询工具不太友好, 对公司运维人员使用有点困难,所以花了个时间做了一个页面,方便运维人员使用,如下。 也不难,有兴趣的朋友可以私聊发源码。 开发帮助-ES数据查询 搜索 输入要查看的文档索引,文档类型后点【查询】即可 搜…

MySQL知识点总结(五)——锁

MySQL知识点总结(五)——锁 锁分类表锁 & 行锁如何添加表锁?如何添加行锁? 读锁 & 写锁行锁 & 间隙锁(gap lock)& 临键锁(next-key lock) 加锁机制分析可重复读隔离…

C语言:指针(一)

目录 1.内存和地址2. 指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 解引用操作符(*) 2.3 指针变量的大小 3.指针变量的类型和意义3.1 指针的解引用3.2 指针 -指…

桥接模式:解耦抽象与实现,实现灵活多变的扩展结构

文章目录 一、引言二、应用场景与技术背景三、模式定义与实现四、实例详解五、优缺点分析总结: 一、引言 ​ 桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立变化。这种模式通过创建一个抽象层和实现层的结构&…

【前端素材】推荐优质后台管理系统Be admin平台模板(附源码)

一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

ThreeJS 几何体顶点position、法向量normal及uv坐标 | UV映射 - 法向量 - 包围盒

文章目录 几何体的顶点position、法向量normal及uv坐标UV映射UV坐标系UV坐标与顶点坐标设置UV坐标案例1:使用PlaneGeometry创建平面缓存几何体案例2:使用BufferGeometry创建平面缓存几何体 法向量 - 顶点法向量光照计算案例1:不设置顶点法向量…

探索设计模式的魅力:状态模式揭秘-如何优雅地处理复杂状态转换

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并且坚持默默的做事。 探索设计模式的魅力:状态模式揭秘-如何优雅地处理复杂状态转换 文章目录 一、案例…

使用 ES|QL 优化可观察性:简化 Kubernetes 和 OTel 的 SRE 操作和问题解决

作者:Bahubali Shetti 作为一名运营工程师(SRE、IT 运营、DevOps),管理技术和数据蔓延是一项持续的挑战。 简单地管理大量高维和高基数数据是令人难以承受的。 作为单一平台,Elastic 帮助 SRE 将无限的遥测数据&#…

亿道丨三防平板丨加固平板丨工业平板丨选购三大要素?

在当今的市场中,企业在复杂多变的大环境中面临着许多挑战和机遇。其中包括尽管消费者对产品的需求不断增长,但劳动力短缺仍在继续的问题。大部分企业正在采用更具成本效益的方法,并希望利用他们获得的硬件和软件做更多的事情,因此…

Stable Diffusion 3的到来巩固了 AI 图像对抗 Sora 和 Gemini 的早期领先优势

Stability AI 将其更改为 Stable Diffusion 3。VentureBeat 报道称,Stability AI 的下一代旗舰 AI 图像生成模型将使用类似于 OpenAI 的 Sora 的扩散变压器框架。其当前模型仅依赖于扩散架构。虽然尚未发布,但您可以在等候名单中注册。 官方网址链接&am…

28V、115V、270V坦克装甲车启动电源:为现代战争注入新能量

28V、115V、270V坦克装甲车启动电源:为现代战争注入新能量 世界新格局的诞生后,现代战争已经从传统的陆地、海洋、空中扩展到了网络空间和外太空。在这种背景下,各种先进的武器装备不断涌现,为国家安全提供有力保障。28V、115V、2…

微信小程序01: springboot获取accessToken方式 ,配合redis缓存使用

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 上文小总结1.1.2 上文传送门 2. springboot获取accessToken2.0 accessToken简介2.1 准备工作2.2 具体代码使用与注释如下2.2.1 代码解释(一)[无需复制]2.2.2 代码解释(二)[无需复制] 2.3 最后一步 获取accessToken2.3.1 两行代…