cicd的基本概念

一.gitlab-cicd技术点

DevOps CI/CD理念与主流工具

DevOps 运动的兴起给业界提供了一个参考答案。其中CI 和 CD两个理念就是解决开发者和运维协同工作的一剂良方。

CI 是 Continuous Integration 的缩写,表示持续集成。CD 是 Continuous Delivery 的缩写,表示持续交付,有时CD也表示持续部署(Continuous Deployment)。

持续集成的要求是代码提交后,管理工具在检测到代码变更后,会自动拉取分支代码进行构建,包括编译与单元测试。有更高要求的,还要完成模块测试与集成测试。

持续交付则是在持续集成的基础上,提交可用于生产环境部署的正式程序、代码与配置文件。在持续交付阶段,也要进行程序的自动化测试,并实现自动化发布。

持续部署是在持续交付的基础上,将代码变更应用到生产环境中。它可以借助多种自动化的部署手段,实现程序的平滑升级/回滚。

市场上已经有多款工具可供选择,包括GitLab CI/CD、Jenkins、Circle CI、Pipelines等。我们对最主流的两款工具进行介绍。

Jenkins发布于2011年,因其丰富的插件生态、并行执行能力和活跃的社区,赢得了广泛的支持。但Jenkins也有不足,那就是其与代码托管仓库之间的数据交换。

2015年,GitLab CI/CD发布,除了出色的CI/CD功能,还能够轻松管理git源码库,逐渐成为非常受欢迎的DevOps CI/CD工具。

1.代码托管工具

  1. 可协同:在功能层面要包含仓库管理、分支管理、权限管理、提交管理、代码评审等代码存储和版本管理等功能,让开发者更好的协同工作;
  2. 可集成:好的代码托管服务应该具备灵活和简易的三方工具集成能力,降低 DevOps 的实施落地成本 ;
  3. 安全可靠:这是最重要的一点,对于个人开发者可能无感,但是对于企业而言,代码的安全性、服务的稳定性、数据是否存在丢失的风险,是会最被优先考量的点。

常用代码托管工具见下表:

组件

gitlab

Gitee

GitHub

云托管

企业级

支持企业级,收费

企业级,免费

企业级,免费

企业级,收费

搭建环境

不需要搭建

不需要搭建

需要搭建

不需要搭建

存储环境

不受企业控制

不受企业控制

企业控制

不受企业控制

2.集成流水线工具

集成流水线就像传统的工业流水线一样,在经历构建、测试、交付之后,生产出一代一代更新迭代的软件版本。实现了软件产品小步迭代、高频发布、适时集成、稳定的系统演进线路图。在选择集成流水线工具的时候,我们需要关注:

  1. 版本控制工具的支持;
  2. 每个构建是否可以支持指定多个代码源 URLS;
  3. 是否支持构建产物管理库,如公有云对象存储等;
  4. 是否支持部署流水线,类似于一个或多个构建完成后触发另一个构建;
  5. 是否支持并行构建;
  6. 是否支持构建网格,以及对网格内机器管理的能力。如能否将多个构建同时分配到多个构建机器上执行,以提高执行速度;
  7. 是否有良好的开放 API,比如触发构建 API、结果查询 API、标准的 Report 接口等;
  8. 账户体系,是否支持第三方账户接入,如企业 LDAP 等;
  9. 是否有良好的 Dashboard;
  10. 多语言支持;
  11. 与构建工具(如 Maven,Make,Rake,Nant、Node 等)和测试工具的集成。

组件

Jenkins

gitlab-cicd

Walle

Zading

开源/商业性

开源

开源

开源

开源/商用

产品类型

自托管/本地部署

自托管/本地部署

自托管/本地部署

自托管/本地部署

内置cicd

自定义cicd部署

内置cicd

内置cicd

内置cicd

独特功能

插件

统一集成代码管理

易操作的webui

测试环境一键部署

安装配置

简单

简单

简单

简单

构建piplines

支持插件1k+

支持

支持

支持

cicd部署面板

部分支持

最近状态,单页面支持

完美部署面板

完美部署面板

代码质量

sonarqube插件

内置

sonarqube插件

sonarqube插件

3.服务注册发现工具

服务发现为 Deploy 的最后环节,缺一不可。无论是四七层负载均衡,还是微服务、RPC 服务框架,服务发现都是产品投产的临门一脚。服务注册发现工具选型需要从生态发展、便利性、语言无关性等角度来综合考量。

常用的组件工具如下表:

4.持续监控

服务的稳定性离不开监控系统的保驾护航。监控系统为服务稳定运行提供数据可视化、异常报警、异常定位、故障追踪等能力;同时监控系统还为服务持续优化升级提供依据和考量标准。

监控系统有三大基石:指标、日志、分布式追踪。

指标体系:聚焦于故障发现环节,服务以数字形式评估出服务 QPS、成功率、延迟、容量等关键指标,搭配报警系统可以保证当核心指标异常时及时通知开发 / 运维人员。除了核心指标外,服务还可以将各模块 / 阶段的瓶颈点、外部依赖指标量化,建立更加完善服务状态概览,以便服务开发 / 运维人员快速定位异常,完成根因分析。指标系统优势是聚合能力,用较少的存储资源和计算资源表达系统内部状态。

常用工具及功能对照如下:

二.cici工作流程 

用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建、测试和验证代码的更改以及部署。

GitLab CI 的基本流程如下:

1. 开发人员推送代码

2. 触发 GitLab CI 启动

3. runner 执行预定义脚本

项目部署流程

1. 开发人员提交代码到GitLab仓库。

2. 触发GitLab 流水线创建,Runner 执行 .gitlab-ci.yml 定义的 stages。

3. 将制作好的镜像推送到已有的镜像仓库,供后续的Deploy流程使用。

4. 通过Rainbond自定义API的方法,触发平台组件的自动构建,进入Deploy阶段。

 

 平台化+原子化设计,平台提供基础服务,能力可以通过原子化形式无限扩展,既兼顾了平台的稳定性,又大大减低了现有工具平台的接入成本

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

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

相关文章

10- Redis 键值对数据库是怎么实现的?

在开始将数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型的对象,比如 List 对象&#xf…

刷题训练之分治快排

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握分治快排算法。 > 毒鸡汤:学习,学习,再学习 ! 学,然后知不足。 > 专栏选自:刷…

ThreadLocal与ForkJoin使用踩坑记录

由于并发的需要原因,使用CompletableFuture异步执行Dubbo接口,RpcContext中存储了tenantId等信息。上线一段时间后,发现有些时候拿到的上下文并不是自己线程的上下文。 原因分析 CompletableFuture.supplyAsync内部使用ForkJoinPool执行。 要…

【EI会议/稳定检索】2024年电机与电气控制国际会议(ICMEC 2024)

2024 International Conference on Motor and Electrical Control 2024年电机与电气控制国际会议 【会议信息】 会议简称:ICMEC 2024 截稿时间:(以官网为准) 大会地点:中国厦门 会议官网:www.meciac.com 会议邮箱&…

夸张,腾讯实习三个月,存款20W+

大家好,我是白露。 今天在牛客上看到一条帖子,让我感叹万分:实习两三个月,竟然已经存下了20多万的存款。 这也太夸张了吧?不太真实啊…… 很多网友表示疑问,“两三个月实习顶多存两三万吧?武理…

【工具】windows下VMware17解锁mac安装选项(使用unlocker427)

目录 0.简介 1.环境 2.安装前后对比 3.详细安装过程 3.1 下载unlocker427 1)下载地址 2)下载unlocker427.zip 3)解压之后是这样的 4)复制iso中的两个文件到你本地的VMware的安装目录下 5)复制windows下的所有…

【笔记】从零开始做一个精灵龙女-装备阶段

这里只记录相对重要的步骤和一些思路 但是头发那块很详细哦~ (标的小数字不用在意,那个是我网课的时长记录) 耳环 1.创建一个圆环,调整参数 做好后再复制一个小的 肩甲 2.0-2.4 1.创建圆柱体/球体也可 然后把底部的两个点删…

有哪些好用的ai工具,可以提升科研、学习、办公等效率?

最近,Sora的诞生为AI再添了一把火。 据介绍,这款“文生视频”的Sora可以直接输出长达60秒的视频,并且包含高度细致的背景、复杂的多角度镜头,以及富有情感的多个角色。 不仅能准确呈现细节,还能理解物体在物理世界中…

Accelerate笔记:本地SGD

本地 SGD 是一种分布式训练技术,其中梯度不是每一步都同步。每个进程都会更新自己版本的模型权重,在给定的步数后,通过跨所有进程平均这些权重来同步它们。 在底层,本地 SGD 代码禁用了自动梯度同步(但累积仍然如预期工…

什么是最好的手机数据恢复软件?6 款手机数据恢复软件 [2024 年更新]

什么是最好的手机数据恢复软件?在这篇文章中,您将了解 6 款最好的免费手机数据恢复软件,并学习如何恢复数据的完整指南。 最好的手机数据恢复软件是什么? 手机数据恢复软件是恢复智能手机中丢失或删除的文件、消息、照片和其他宝…

Win10文件系统错误(-2147219196)

问题出现的原因: C盘快挤满了,导致电脑很卡,于是删掉了C盘用户下的一些文件C:\Users\DIY-PC,省了五六十G的内存,结果发现把一些系统文件也删掉了,导致图片预览报错 问题现象: (自…

6月软考新通知:24下集成大概率是中级蕞简单的一门

2024下半年软考6月新通知: 一、24下软考考试时间安排: 24下半年软考报名时间:8月19日-9月15日 24下半年软考考试时间:11月9-12日 24下半年软考成绩查询:12月中(预计) 二、考情分析 24上软考…

免费,C++蓝桥杯等级考试真题--第7级(含答案和解析)

C蓝桥杯等级考试真题--第7级 答案:D 解析:步骤如下: 首先,--a 操作会使 a 的值减1,因此 a 变为 3。判断 a > b 即 3 > 3,此时表达式为假,因为 --a 后 a 并不大于 b。因此,程…

气压、湿度、震动开关、声音、红外火焰传感器 | 配合Arduino使用案例

BMP180 气压传感器 BMP180 是一种用于测量气压的科学仪器。可以获取到温度、气压、海拔。 先在 arduino ide 中安装依赖 /****** Arduino 接线 ***** Arduino 传感器* VCC 5v* GND GND* A4 SDA * A5 SCL ***********************/#include &l…

【Springcloud微服务】MybatisPlus下篇

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Springcloud微服务 🌠 首发时间:2024年6月4日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43…

Beyond Compare 4 代码对比重新激活使用30天

1.同时按住‘’Win”“R”键,打开运行窗口。 2.在文本框中输入“regedit”,然后点击“确定”。 3.打开注册表,删除相关注册信息 打开注册表后,依次点击左侧列的“HKEY_CURRENT_USER”-“SOFTWARE”-“Scooter Software”-“Beyo…

[预告] 现代C++之全面解读Mutex与RAII Lock

目标 在我们编写并发编程项目的时候,mutex是必须要掌握的点,深入mutex的底层原理与实现能够帮助我们更好的理解与使用mutex。例如:在编写代码时,我们会遇到如下几个场景: 如何避免死锁如何自动释放锁如何设置超时控制多…

KT142C语音芯片ic批量生产说明不需要usb拷贝音频

一、批量生产的简介 内置空间虚拟成U盘的批量生产说明,其实就是将音频文件配置文件打包成一个bin文件就可以了,当然借助于电脑端的exe工具。“FAT镜像文件生成工具_1.0.9.exe” 最后,将生成的文件,重命名为“userfat-日期-特点.b…

Digital Assets

目录 .HDA文件 Expanded directories .HDA文件 Houdini将数字资产存储于.hda文件内; .HDA文件格式是一种二进制存档格式(binary archive format),存储一个或多个资产的数据层级结构,包括资产节点的类型定义&#xf…

配置本地 apt 源

挂载iso镜像文件 注意:文章中的挂载方法是临时挂载,重启服务器失效 我是使用iBMC的虚拟控制台将我的iso文件以设备的形式挂载到服务器上,我的iso文件是设备:/dev/sr0 也可以直接将iso文件上传到服务器某个目录。 将 /dev/sr0 进…