用 GitLab 做 CI/CD 是什么感觉,太强了!!

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

   

   作者:废物大师兄 

 来源:www.cnblogs.com/cjsblog/p/12256843.html

GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:

  • Continuous Integration (CI)  持续集成

  • Continuous Delivery (CD)     持续交付

  • Continuous Deployment (CD)   持续部署

持续集成的工作原理是将小的代码块推送到Git仓库中托管的应用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中。

持续交付和部署相当于更进一步的CI,可以在每次推送到仓库默认分支的同时将应用程序部署到生产环境。

这些方法使得可以在开发周期的早期发现bugs和errors,从而确保部署到生产环境的所有代码都符合为应用程序建立的代码标准。

GitLab CI/CD 由一个名为 .gitlab-ci.yml 的文件进行配置,改文件位于仓库的根目录下。文件中指定的脚本由GitLab Runner执行。

1. GitLab CI/CD 介绍

软件开发的持续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会。从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预。

它涉及到在每次小的迭代中就不断地构建、测试和部署代码更改,从而减少了基于已经存在bug或失败的先前版本开发新代码的机会。

Continuous Integration(持续集成)

假设一个应用程序,其代码存储在GitLab的Git仓库中。开发人员每天都要多次推送代码更改。对于每次向仓库的推送,你都可以创建一组脚本来自动构建和测试你的应用程序,从而减少了向应用程序引入错误的机会。这种做法称为持续集成,对于提交给应用程序(甚至是开发分支)的每项更改,它都会自动连续进行构建和测试,以确保所引入的更改通过你为应用程序建立的所有测试,准则和代码合规性标准。

Continuous Delivery(持续交付)

持续交付是超越持续集成的更进一步的操作。应用程序不仅会在推送到代码库的每次代码更改时进行构建和测试,而且,尽管部署是手动触发的,但作为一个附加步骤,它也可以连续部署。此方法可确保自动检查代码,但需要人工干预才能从策略上手动触发以必输此次变更。

Continuous Deployment(持续部署)

与持续交付类似,但不同之处在于,你无需将其手动部署,而是将其设置为自动部署。完全不需要人工干预即可部署你的应用程序。

1.1. GitLab CI/CD 是如何工作的

为了使用GitLab CI/CD,你需要一个托管在GitLab上的应用程序代码库,并且在根目录中的.gitlab-ci.yml文件中指定构建、测试和部署的脚本。

在这个文件中,你可以定义要运行的脚本,定义包含的依赖项,选择要按顺序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否 要自动运行脚本或手动触发脚本。

为了可视化处理过程,假设添加到配置文件中的所有脚本与在计算机的终端上运行的命令相同。

一旦你已经添加了.gitlab-ci.yml到仓库中,GitLab将检测到该文件,并使用名为GitLab Runner的工具运行你的脚本。该工具的操作与终端类似。

这些脚本被分组到jobs,它们共同组成一个pipeline。一个最简单的.gitlab-ci.yml文件可能是这样的:

before_script:  - apt-get install rubygems ruby-dev -yrun-test:  script:    - ruby --version 6

before_script属性将在运行任何内容之前为你的应用安装依赖,一个名为run-test的job(作业)将打印当前系统的Ruby版本。二者共同构成了在每次推送到仓库的任何分支时都会被触发的pipeline(管道)。

GitLab CI/CD不仅可以执行你设置的job,还可以显示执行期间发生的情况,正如你在终端看到的那样:

为你的应用创建策略,GitLab会根据你的定义来运行pipeline。你的管道状态也会由GitLab显示:

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

1.2. 基本 CI/CD 工作流程

一旦你将提交推送到远程仓库的分支上,那么你为该项目设置的CI/CD管道将会被触发。

GitLab CI/CD 通过这样做:

  • 运行自动化脚本(串行或并行) 代码Review并获得批准

  • 构建并测试你的应用

  • 就像在你本机中看到的那样,使用Review Apps预览每个合并请求的更改

  • 代码Review并获得批准

  • 合并feature分支到默认分支,同时自动将此次更改部署到生产环境

  • 如果出现问题,可以轻松回滚

通过GitLab UI所有的步骤都是可视化的:

1.3. 深入了解CI/CD基本工作流程

如果我们深入研究基本工作流程,则可以在DevOps生命周期的每个阶段看到GitLab中可用的功能,如下图所示:

1. Verify

  • 通过持续集成自动构建和测试你的应用程序

  • 使用GitLab代码质量(GitLab Code Quality)分析你的源代码质量

  • 通过浏览器性能测试(Browser Performance Testing)确定代码更改对性能的影响

  • 执行一系列测试,比如Container Scanning , Dependency Scanning , JUnit tests

  • 用Review Apps部署更改,以预览每个分支上的应用程序更改

2. Package

  • 用Container Registry存储Docker镜像

  • 用NPM Registry存储NPM包

  • 用Maven Repository存储Maven artifacts

  • 用Conan Repository存储Conan包

3. Release

  • 持续部署,自动将你的应用程序部署到生产环境

  • 持续交付,手动点击以将你的应用程序部署到生产环境

  • 用GitLab Pages部署静态网站,可以点击这里参考这篇文章

  • 仅将功能部署到一个Pod上,并让一定比例的用户群通过Canary Deployments访问临时部署的功能(PS:即灰度发布)

  • 在Feature Flags之后部署功能

  • 用GitLab Releases将发布说明添加到任意Git tag

  • 使用Deploy Boards查看在Kubernetes上运行的每个CI环境的当前运行状况和状态

  • 使用Auto Deploy将应用程序部署到Kubernetes集群中的生产环境

使用GitLab CI/CD,还可以:

  • 通过Auto DevOps轻松设置应用的整个生命周期

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

  • 安装你自己的GitLab Runner

  • Schedule pipelines

  • 使用安全测试报告(Security Test reports)检查应用程序漏洞

2. GitLab CI/CD 快速开始

.gitlab-ci.yml文件告诉GitLab Runner要做什么。一个简单的管道通常包括三个阶段:build、test、deploy

管道在 CI/CD > Pipelines 页面

2.1. 创建一个 .gitlab-ci.yml 文件

通过配置.gitlab-ci.yml文件来告诉CI要对你的项目做什么。它位于仓库的根目录下。

仓库一旦收到任何推送,GitLab将立即查找.gitlab-ci.yml文件,并根据文件的内容在Runner上启动作业。

下面是一个Ruby项目配置例子:

 image: "ruby:2.5" before_script:   - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs   - ruby -v   - which ruby   - gem install bundler --no-document   - bundle install --jobs $(nproc)  "${FLAGS\[@\]}" rspec:   script:     - bundle exec rspec rubocop:   script:     - bundle exec rubocop

上面的例子中,定义里两个作业,分别是 rspec 和 rubocop,在每个作业开始执行前,要先执行before_script下的命令

2.2. 推送 .gitlab-ci.yml 到 GitLab

git add .gitlab-ci.ymlgit commit -m "Add .gitlab-ci.yml" git push origin master

2.3. 配置一个Runner

在GitLab中,Runner运行你定义在.gitlab-ci.yml中的作业(job)

一个Runner可以是一个虚拟机、物理机、docker容器,或者一个容器集群

GitLab与Runner之间通过API进行通信,因此只需要Runner所在的机器有网络并且可以访问GitLab服务器即可

你可以去 Settings ➔ CI/CD 看是否已经有Runner关联到你的项目,设置Runner简单又直接

2.4. 查看 pipeline 和 jobs的状态

在成功配置Runner以后,你应该可以看到你最近的提交的状态

为了查看所有jobs,你可以去 Pipelines ➔ Jobs 页面

通过点击作业的状态,你可以看到作业运行的日志

回顾一下:

1、首先,定义.gitlab-ci.yml文件。在这个文件中就定义了要执行的job和命令

2、接着,将文件推送至远程仓库

3、最后,配置Runner,用于运行job

3. Auto DevOps

Auto DevOps 提供了预定义的CI/CD配置,使你可以自动检测,构建,测试,部署和监视应用程序。借助CI/CD最佳实践和工具,Auto DevOps旨在简化成熟和现代软件开发生命周期的设置和执行。

借助Auto DevOps,软件开发过程的设置变得更加容易,因为每个项目都可以使用最少的配置来完成从验证到监视的完整工作流程。只需推送你的代码,GitLab就会处理其他所有事情。这使得启动新项目更加容易,并使整个公司的应用程序设置方式保持一致。

下面这个例子展示了如何使用Auto DevOps将GitLab.com上托管的项目部署到Google Kubernetes Engine

示例中会使用GitLab原生的Kubernetes集成,因此不需要再单独手动创建Kubernetes集群

本例将创建并部署一个从GitLab模板创建的应用

3.1. 从GitLab模板创建项目

在创建Kubernetes集群并将其连接到GitLab项目之前,你需要一个Google Cloud Platform帐户

下面使用GitLab的项目模板来创建一个新项目

给项目起一个名字,并确保它是公有的

3.2. 从GitLab模板创建Kubernetes集群

点击 Add Kubernetes cluster 按钮,或者 Operations > Kubernetes

安装Helm, Ingress, 和 Prometheus

3.3. 启用Auto DevOps (可选)

Auto DevOps 默认是启用的。

导航栏 Settings > CI/CD > Auto DevOps

勾选 Default to Auto DevOps pipeline

最后选择部署策略

一旦你已经完成了以上所有的操作,那么一个新的 pipeline 将会被自动创建。为了查看pipeline,可以去 CI/CD > Pipelines

3.4. 部署应用

到目前为止,你应该看到管道正在运行,但是它到底在运行什么呢?

管道内部分为4个阶段,我们可以查看每个阶段有几个作业在运行,如下图:

构建 -> 测试 -> 部署 -> 性能测试

现在,应用已经成功部署,让我们通过浏览器查看。

首先,导航到 Operations > Environments

在Environments中,可以看到部署的应用的详细信息。在最右边有三个按钮,我们依次来看一下:

第一个图标将打开在生产环境中部署的应用程序的URL。这是一个非常简单的页面,但重要的是它可以正常工作!

紧挨着第二个是一个带小图像的图标,Prometheus将在其中收集有关Kubernetes集群以及应用程序如何影响它的数据(在内存/ CPU使用率,延迟等方面)

第三个图标是Web终端,它将在运行应用程序的容器内打开终端会话。

4. Examples

使用GitLab CI/CD部署一个Spring Boot应用。

示例 .gitlab-ci.yml

 image: java:8
 
 stages:
   - build
   - deploy
 
 before_script:
   - chmod +x mvnw
 
 build:
   stage: build
   script: ./mvnw package
   artifacts:
     paths:
       - target/demo-0.0.1-SNAPSHOT.jar
 
 production:
   stage: deploy
   script:
   - curl --location "https://cli.run.pivotal.io/stable?release=linux64-binary&source=github" | tar zx
   - ./cf login -u $CF_USERNAME -p $CF_PASSWORD -a api.run.pivotal.io
   - ./cf push
   only:
   - master

5. Docs

https://about.gitlab.com/solutions/kubernetes/

https://docs.gitlab.com/ee/ci/README.html

https://docs.gitlab.com/ee/ci/introduction/

https://docs.gitlab.com/ee/topics/autodevops/

https://docs.gitlab.com/ee/ci/examples/README.html

使用gitlab的ci/cd自动将应用部署到rancher中 rancher2.+ 使用gitlab完成自动部署本文主要介绍如何使用gitlab的ci/cd自动发布应用到rancher新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的... 阅读详情

相关推荐

GitLab 运行GitLab-Runner CI/CD发布

本文主要演示使用A推送项目到 B上,和注册GitLab Runner,添加docker类型的Executor来执行构建,并以此为基础完成一个go源码示例项目从编译构建、镜像打包到应用部署的CICD过程。 A:192.168.10.12 B:192.168.10.19 端口2375 Gitlab ip:192.168.10.9 一、在192.168.10.12上使用docker安装gitlab-runner [root@adscom gitlab]# mkdir -p /config #创建配置目录 [r

clover661的博客 1847

GitLab CI/CD

GitLab Runner是一个开源项目,用于运行作业并将结果发送回GitLab。与GitLabCI结合使用,GitLabCI是GitLab随附的用于协调作业的开源持续集成服务。GitLab Runner是用Go编写的,可以在Linux,macOS和Windows操作系统上运行。容器部署需使用最新Docker版本。GitLab Runner需要最少的Docker vl.13.0。GitLab Runner版本应与GitLab版本同步。(避免版本不一致导致差异化)。

weixin_49131823的博客 1万+

从零到CI/CD:给刚搭好的GitLab配上GitLab Runner(避坑指南)

本文详细介绍了如何为GitLab配置GitLab Runner以实现CI/CD自动化流程,包括安装、注册、编写.gitlab-ci.yml文件及常见问题排查。通过搭建GitLab Runner,开发者可以显著提升代码测试和部署效率,避免重复劳动,实现即时反馈和标准化流程。

weixin_26905487的博客 405

Gitlab CI/CD 简单介绍

基础概念 CI: CD : DevOps: Job Pipeline

wangjiang 3万+

wpa_supplicant EAPOL状态机分析

wpa_supplicant EAPOL状态机分析

加油鸭 1477

从内参矩阵到归一化平面:揭秘相机成像的标准化核心

本文深入解析了相机成像中的核心概念——归一化平面。通过拆解内参矩阵(包含焦距、主点等参数)的作用,详细阐述了如何将像素坐标转换为与具体相机硬件无关的归一化坐标。这一标准化过程是计算机视觉算法(如多相机系统对齐、视觉SLAM)实现跨设备通用性的关键,能有效提升算法的鲁棒性和泛化能力。

opencv7vision的博客 450

GitLab-CI/CD指南

由于公司没有运维,写go服务时各个环境编译部署还是略显麻烦,由于代码管理使用的是 gitlab,所以决定使用 gitlab 自带的 CI/CD 来做自动编译和部署,这样每次提交代码以后就可以自动部署到服务器上了。Executor的类型在注册 Runner 的时候确定,比较常用的是 Docker 和 SSH。GitLab,Runner 和 Executor 之间的关系如下图所示(图片来自GitLab官方文档)。

陈戏猿 3556

科研党必备!用Requests+BeautifulSoup升级版Nature爬虫(含PDF下载功能)

本文介绍了一套基于Python Requests和BeautifulSoup的Nature期刊智能爬虫系统,专为科研人员设计,可自动抓取论文标题、摘要及开放获取的PDF文档。系统采用模块化设计,包含请求管理、PDF检测和邮件通知等功能,确保高效合规地获取学术资源,提升科研效率。

weixin_29041767的博客 257

【GitLab】693- 用 GitLab 做 CI/CD 是什么感觉,太强了!!

作者:废物大师兄来源:www.cnblogs.com/cjsblog/p/12256843.htmlGitLab CI/CD 是一个内置在GitLab中的工具,用于通过持...

pingan8787 476

ArcGIS图解建模工具与DEM提取山脊、山谷线(水文分析、表面分析)

参考汤国安、杨昕等编著的《地理信息系统空间分析实验教程第二版》 利用水文分析(流量)和表面分析(坡向变率)得到山脊和山谷线 文章目录1、基本概念1.1 正地形1.2 负地形正负地形的影响2、水文分析方法2.1 基本思想原理2.2 技术路线2.3 操作步骤2.3.1 正负地形的提取2.3.2 利用水文分析思想和工具提取研究区域的山脊线2.3.3 利用水文分析思想和工具提取研究区域的山谷线2.3.4 利用水文分析提取山脊线和山谷线结果3、表面分析方法3.1 基本思想原理3.2 技术路线3.3 操作步骤4、图.

fungis 1万+

【ChatGPT实战案例】ChatGPT如何帮助产品经理高效工作?

1. 产品经理主要工作方向, 2. 具体工作中,向ChatGPT提问参考

weixin_62909516的博客 1902

gitlab run成功 但无法访问_用 GitLab 做 CI/CD 是什么感觉,太强了!!

作者:废物大师兄来源:www.cnblogs.com/cjsblog/p/12256843.htmlGitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:Continuous Integration (CI) 持续集成Continuous Delivery (CD) 持续交付Continuous Deployment (CD) ...

weixin_39814454的博客 314

从底层结构开始学习FPGA(8)----Block RAM(BRAM,块RAM)

BRAM作为FPGA底层的存储资源,作用很大,比如可以RAM/ROM/FIFO。

孤独的单刀 2万+

用 GitLab 做 CI/CD 是什么感觉,太强了

点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!GitLab CI/CD 是一个内置在 GitLab 中的工具,用于通过持续方法进行软件开发:Conti...

民工哥的博客 1159

《模型轻量化-剪枝蒸馏量化系列》YOLOv5无损剪枝(附源码)

无损剪枝模型到几百kb~

cv君的博客 3万+

用 Docker 一键部署 SillyTavern酒馆 mac/windows/linux通用教程,我再也不手动折腾了!

本文介绍了如何使用 Docker 一键部署 SillyTavern 项目,适用于 Mac、Windows 和 Linux 系统。SillyTavern 是一个本地部署的大语言模型聊天界面,支持多种插件和扩展。文章详细说明了安装 Docker、拉取项目、启动容器、配置白名单、启用插件等步骤,并提供了常见问题的解决方法。通过 Docker 部署,用户可以避免繁琐的手动配置,快速搭建和运行 SillyTavern,适合希望简化部署流程的用户。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2627

cd返回上一 git_用 GitLab 做 CI/CD 是什么感觉,太强了

原标题:用 GitLab 做 CI/CD 是什么感觉,太强了 GitLab CI/CD 是一个内置在 GitLab 中的工具,用于通过持续方法进行软件开发:Continuous Integration(CI):持续集成Continuous Delivery(CD):持续交付Continuous Deployment(CD):持续部署持续集成的工作原理是将小的代码块推送到 Git 仓库中托管的应用程...

weixin_39602579的博客 147

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

使用Gitlab的CI/CD实现简单的自动发布

我们做了个简单的docsify帮助网页,因为多人协作,加上源文件都是md格式的,于是把它放在了自己的gitlab上。但是这样一来问题就是如果要发布文件,必须每次更新完都让服务器管理员去到服务器上执行一下拉取,显然不合理,看到gitlab的ci/cd功能,正好研究下,记录下来。 ci/cd介绍 什么是ci/cd?红帽是这么说的: CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主

baalchina的专栏 8915

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[GitLab CI/CD]记录基于Docker的环境搭建实践

[GitLab CI/CD]记录基于Docker的环境搭建实践

有问题请直接说问题就好 585

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GitLab实现CI/CD

刚开始接触CICD时,只知道在后端提交代码后,会自动发布,可以直接用,省去了构建,搬文件的过程,感觉比较方便,就研究了下,自己部署试了下。

xinning1002的博客 179

DevOps系列文章之 GitLab CI/CD

gitlab-ci.yml 文件被用来管理项目的 runner 任务,Gitlab CI通过.gitlab-ci.yml文件管理配置job,该文件定义了statge顺序、job应该如何触发和工作、执行什么脚本、如何构建pipeline等流程该文件存放于仓库的根目录, 默认名为我们先看一个简单的例子:.gitlab-ci.yml## 定义pipeline流程:verify->build->dockerpush->deploystages:- verify- build- deploy#单元测试。

Coder_Boy_的博客 1638
上一篇: 实战:上亿数据如何秒查
下一篇: 如何保证缓存与数据库的双写一致性?
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值