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

引言:上一期我们部署好了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。

  • 安排管道。

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

希望能够帮助到大家!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ELK入门(三)-Kibana

Kibana Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级…

让C语言代码变抽象(二)

目录 前言: 代码: 前言: 在今天写代码的时候,我又想到一个更抽象的代码。 我在写注释的时候突然想想到条件编译的东西,好像也能用来注释东西。 代码: 我们在这直接上干货 我们知道在条件编译中有一个叫…

鸿蒙开发-DevEcoStudio的安装及使用

DevEcoStudio的安装及使用 前言 DevEcoStudio分为两个版本,分别用于HarmonyOS和OpenHarmony开发,截止文档编写时,用于开发HarmonyOS的DevEcoStudio版本为3.1.1,适用于OpenHarmony的DevEcoStudio版本为4.0.0。 接下来的文档是基…

React18源码: schedule任务调度messageChannel

React调度原理(scheduler) 在React运行时中,调度中心(位于scheduler包)是整个React运行时的中枢(其实是心脏),所以理解了scheduler调度,就基本掌握了React的核心React两大循环:从宏…

年关将至送大礼 社区适时献爱心

在这个快节奏的时代,社区作为人们生活的重要组成部分,其凝聚力和互助精神显得尤为重要。2024年2月7日,实践队员李若钰有幸参与了社区礼盒分装的活动,这不仅仅是一次简单的劳动,更是一次心灵的洗礼和感悟。 礼盒分装&am…

HTML5和CSS3提高

一、HTML5的新特性 增加了一些新的标签,新的表单,新的表单属性,IE9以上版本的浏览器才支持 注意: 这些语义化标准主要针对搜索引擎的 新标签可以使用多次 在IE9中需要把这些元素转化为块级元素 新增的多媒体标签 主要包含两个…

Java JDBC:林浩然与杨凌芸的编程奇缘

Java JDBC:林浩然与杨凌芸的编程奇缘 Java JDBC: The Programming Odyssey of Lin Haoran and Yang Lingyun 在那个充满二进制和算法符号的世界里,我们的男主角林浩然,一个热爱Java的码农新秀,正准备踏上他的JDBC探险之旅。他那双…

【vscode】按F5无法执行调试python或go

原因: 找不到解析器,需要安装插件(python,或go 等) 安装插件后,还是无法执行,按 ctrlshiftp,看不到解析器 正常应该是: 解决方法: 1、判断python是否安装成功 pyth…

Selenium(简单入门)

请直接看原文:selenium 使用教程详解-java版本 - 小葛师兄 - 博客园 (cnblogs.com) -------------------------------------------------------------------------------------------------------------------------------- 第一章 Selenium 概述# 1.1.Selenium 发展史# ​ …

“从根到叶:深入理解排序数据结构“

一.排序的概念及引用 1.1排序的概念 排序是指将一组数据按照一定的规则重新排列的过程。排序的目的是为了使数据具有有序性,便于查找、插入、删除等操作,提高数据的组织和管理效率。 稳定性是指如果序列中存在相等元素,在排序完成后&#…

五、矩阵的运算

1、矩阵的加减: 前提:两个矩阵必须是同形矩阵。 矩阵加减具有交换律,矩阵矩阵相乘没有交换律。 计算结果:元素级运算。 2、矩阵的数乘: 计算结果:元素级运算。这里要区别与行列式的数乘。 3、矩阵与向量的乘…

fiddler抓取,Android真机测试

1.配置Fiddler抓取并解密HTTPS包 Fiddler默认是不抓取HTTPS包的,需要进行相应的配置。 打开Fiddler,选择“Tools->Fiddler Options...” 2.在弹出的对话框中选择“HTTPS”选项卡: 3.勾选“Capture HTTPS CONNECTs”,接着勾选…

多人协作记账账本小程序开源版开发

多人协作记账账本小程序开源版开发 支持多人协作的记账本小程序,可用于家庭,团队,组织以及个人的日常收支情况记录,支持周月年度统计 便捷记账 便捷的记账方式,支持多种记账类型,快捷切换账本等 多账本 支…

springboot751社区维修平台

springboot751社区维修平台 获取源码——》公主号:计算机专业毕设大全

Element使用Message消息提示

Element使用Message消息提示 一、导入Element1、npm 安装2、引入 Element3、实现代码4、效果 一、导入Element 1、npm 安装 推荐使用 npm 的方式安装 npm i element-ui -S2、引入 Element 在 main.js 中写入以下内容 import ElementUI from element-ui; import element-ui…

内核解读之内存管理(6)address_space建立文件索引结点inode和页page、虚拟地址空间vma的映射

内存管理和文件系统总会交织在一起,所以我们今天聊的内容和文件系统有关。 上一节的struct page结构体中,我们看到了一个成员struct address_space*。很明显是用于建立page和address_space的关联。 它是代表某个地址空间吗?实际上不是的&am…

新版Java面试专题视频教程——虚拟机篇②

新版Java面试专题视频教程——虚拟机篇② 3 垃圾收回3.1 简述Java垃圾回收机制?(GC是什么?为什么要GC)3.2 对象什么时候可以被垃圾器回收3.2.1 引用计数法3.2.2 可达性分析算法 3.3 JVM 垃圾回收算法有哪些?——4种3.3…

4 buuctf解题

[CISCN 2019 初赛]Love Math1 打开题目 题目源码 <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("…

如何查看网络,管理网络,以及虚拟网络

一 网络 1 怎么查看网卡&#xff1f;看是千兆还是万兆&#xff1f;是全双工还是半双工&#xff0c;丢包率怎么样&#xff1f;品牌厂家是什么&#xff1f; 用lspci 可以查看网卡的信息 千兆&#xff1a;Gigabit 万兆&#xff1a;10-Gigabit 百兆&#xff1a;100MEther net if…