GitLAB CI-CD入门

news2025/1/15 12:46:31

GitLab CI-CD入门

image-20220505070058376

目录

image-20230518111107027

1、GitLabCI/CD简介

GitLabCI/CD简介

GitLabCI/CD是GitLab内置的持续集成与持续部署系统

image-20230425213724221

  • 开源: CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。(极狐)
  • 易于学习: 官方具有详细的学习操作文档。
  • 无缝集成: CI/CD是GitLab的一部分,支持从计划到部署,具有出色的用户体验。 (例如:做一些基于版本控制系统的提交流水线、合并流水线,是很方便的!)
  • 可扩展: 可以根据需要添加任意数量的构建节点。
  • 更快的结果: 每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
  • 针对交付进行了优化: 多个阶段,手动部署, 环境 和 变量。

tstmp_20230425213814

  • 针对交付进行了优化: 多个阶段,手动部署, 环境和变量。

jenkins里,你想要获取git分支、git提交用户的话,我们都需要先去抓收据,去采集数据,进行一个过滤,再拿到;

但在gitlab里,使用gitlab ci时,里面就有现成的环境变量,我们直接使用就好,所以这一点,还是有很大的优势的。这个文档是大家在开发流水线时必须依赖的一个文档,使用时要注意下这里的版本!

https://docs.gitlab.com/14.9/ee/ci/variables/predefined_variables.html

image-20220505071732864

gitlab ci/cd官方文档

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

image-20220505071140976

常用变量参考文档:

https://docs.gitlab.com/14.9/ee/ci/variables/predefined_variables.html

image-20220505071732864

Pipeline

在每个项目中,使用名为imgYAML文件配置GitLab CI/CDimg流水线。

tstmp_20230425214236

Stages

一条流水线可以包含若干个阶段, 一个阶段可以包含若干个作业。

tstmp_20230425214313

Job

作业是具体要执行的任务,命令脚本语句的集合;

tstmp_20230425214327

Runner

Runner是每个作业的执行节点 ;每个作业可以根据标签选择不同的构建节点;

tstmp_20230425214357

2、GitLabRunner安装部署

见独立md文件。

image-20230516071755553

3、开发第一条Pipeline

image-20230426074748506

1. gitlab-ci.yml

如何开启GitLabCI/CD? 首先要将代码存储到GitLab, 然后在代码库的(默认根目录)添加一个.gitlab-ci.yml文件。该文件中定义了流水线的阶段和运行步骤。

根据不同的场景,可以自定义流水线定义文件的位置。

(默认)存储到项目根目录: /.gitlab-ci.yml

image-20230516071724876

为项目中添加.gitlab-ci.yml文件,表示启动的CI/CD。默认提交动作会自动运行该.gitlab-ci.yml中定义的作业。

  • 来到gitlab项目里,创建一个.gitlab-ci.yml文件

tstmp_20230426123643

  • 1 填写当前创建的文件的名称.gitlab-ci.yml;
  • 2 选择文件的类型;
  • 3 选择一个项目模板;(这里我们先选择一个bash类型)

image-20230426075108271

进行提交,默认就会自动跑流水线了:

但是,此时流水线状态为pending状态,这是为什么呢?

image-20230426075135904

image-20230426075159392

image-20230426075211642

  • 根据报错提示,可以知道是因为.gitlab-ci.yml文件里没指定runner

我们这里先重新写下代码

因此,一般情况下,我们再写流水线代码时,一般需要给每个阶段指定tags:

注意:这里的每个阶段都要添加这个tags才行!

image-20230426075538284

改好后,提交,并观察流水线运行状态:

此时,流水线运行状态就正常了。

image-20230426075634057

image-20230426075652301

image-20230426075754403

  • 我们这里想手动来触发下流水线,观察下test阶段2个作业,为什么这2个作业不是并行运行的呢?

image-20230426075947137

image-20230426075955845

image-20230426080010649

image-20230426080020721

  • 是因为我们的gitlab-runner的配置文件里需要修改下并行选项参数:
[root@Devops6 ~]#vim  /etc/gitlab-runner/config.toml
将concurrent = 1
改为
concurrent = 10

配置完后,默认生效的。

  • 我们再来运行一次流水线,观察下现象

image-20230426123342605

image-20230426123350641

可以看到,这里是并行运行作业的了,符合预期。

2. 流水线页面

tstmp_20230427073303

  • 1 清除runner的缓存;
  • 2 进行CI文件语法校验;
  • 3 手动触发运行流水线;
  • 4 流水的步骤, 可以查看各个阶段的运行日志;

3. Pipeline编辑器

tstmp_20230427073424

4、Pipeline开发工具与设置

1.Pipeline开发工具

image-20230427073740603

可视化编辑器

变更.gitlab-ci.yml文件后, 可以通过Visualize对CI文件中的定义进行可视化;

tstmp_20230427075340

语法检测校验

通过Lint可以检测当前CI文件是否存在语法错误;若存在语法错误可以根据提示进行修正;

tstmp_20230427075408

作业运行日志

一条流水线包含很多个作业,每个作业的运行日志可以在Jobs界面看到。

tstmp_20230427075439

Pipeline环境变量

预定义变量信息:https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

image-20230427075542389

代码类

  • CI_COMMIT_AUTHOR 提交人
  • CI_COMMIT_BRANCH 提交分支
  • CI_COMMIT_MESSAGE
  • CI_COMMIT_REF_NAME
  • CI_COMMIT_SHORT_SHA

作业类:

  • CI_JOB_ID
  • CI_JOB_NAME
  • CI_JOB_STAGE
  • CI_JOB_URL

流水线类:

  • CI_PIPELINE_ID
  • CI_PIPELINE_SOURCE
  • CI_PIPELINE_TRIGGERED
  • CI_PIPELINE_URL

2.Pipeline设置

image-20230427073814952

General pipelines

管道权限、取消冗余管道、跳过历史部署作业;

image-20230427075817432

为项目自定义ci文件

image-20230508194139222

  1. 修改名称:gitlab-ci-cd.yml
  2. 自定义路径:…/ci/xx/xx/.yml
  3. 也是可以这种raw格式的:(但是切记,一定是可公开访问的路径,不能到凭据信息)

image-20230508194321806

image-20230508194335375

http://172.29.9.101:8076/devops6/devops-demo-service/-/raw/main/.gitlab-ci.yml

为项目设置流水线状态标志

支持Markdown、HTML、AsciiDoc格式。

tstmp_20230427075903

tstmp_20230427075918

💘 实战:为项目设置流水线状态标志-2023.5.8(测试成功)

image-20230508075135775

  • 实验环境
gitlab/gitlab-ce:15.0.3-ce.0
  • 实验软件(无)

  • 在项目代码的README.md文件里添加如下部分代码

[![pipeline status](http://172.29.9.101:8076/devops6/devops-demo-service/badges/main/pipeline.svg)](http://172.29.9.101:8076/devops6/devops-demo-service/-/commits/main)

此部分代码位置:gitlab项目-Settings-CI/CD-Gernral Pipelines-Pipeline Status

image-20230508074346644

image-20230508074414021

  • 本次在main分支README.md文件下添加如上部分代码

image-20230508074701798

  • 提交代码后,触发流水线,观察结果

image-20230508074732012

image-20230508074804499

符合预期。😘

设置管道(pipeline)预览权限

可以来到项目>Project information>Members:给这个项目里增加成员

image-20220506064111051

image-20220506064119368

Guest和非项目成员无法,看到管道中作业的日志和管道所生成的制品;

开启公共的管道访问:

  • 公共项目,每个人都可以访问。
  • 内部项目,对于除外部用户之外的所有登录用户。
  • 私人项目,所有项目成员(Guest 或更高级别)。

可以来到项目>Settings>CI/CD>Genernal pipelines:配置管道权限!

image-20220506064541102

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号
《云原生架构师实战》

image-20230107215126971

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20230515221819681

🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎
https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

image-20220507155808206

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

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

相关文章

操作系统原理大题

一、地址变换和求FAT表大小 某一页表内容自0~7依次为03; 07; 0B;11;1A;1D;20;22. 请计算页面大小为1K和4K时的逻辑地址134D对应的物理地址。 首先,将134D转换为二进制数为 0001001101001101 1k为2的10次方 从后往前占十位为 000100|1101001101 竖线前面的二进制转…

Promise的用法原理手写实现

Promise的用法、原理、手写实现 1. promise 入门简介 Promise 是用来解决异步编程的问题。 1.1 JS 中分同步Api 和 异步Api。 同步API&#xff1a;只有当前API执行完成后&#xff0c;才能继续执行下一个API for (let i 0; i < 10000; i) {console.log(i); } console.l…

09-DockerFile

文章目录 1 Dockerfile2 构建过程3 Dockerfile保留字3.1 FROM3.2 MAINTAINER3.3 RUN3.4 EXPOSE3.5 WORKDIR3.6 USER3.7 ENV3.8 VOLUME3.9 ADD3.10 COPY3.11 CMD3.12 ENTRYPOINT 4 构建镜像4.1 案例14.2 案例2 5 虚悬镜像 1 Dockerfile Dockerfile 是用来构建 Docker 镜像的文本…

浅谈JVM基本结构

目录 1.JVM概念 2.JVM基本结构 3.JVM存储数据案例 1.JVM概念 JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能…

SpringBoot【开发实用篇】---- 整合第三方技术(任务、邮件)

SpringBoot【开发实用篇】---- 整合第三方技术&#xff08;任务、邮件&#xff09; 1. 任务QuartzTask 2. 邮件发送简单邮件发送多组件邮件&#xff08;附件、复杂正文&#xff09; 1. 任务 springboot整合第三方技术第二部分我们来说说任务系统&#xff0c;其实这里说的任务系…

mysql中的binlog

目录标题 前言binlog有两个常用的使用场景 常用的binlog日志操作命令查看所有binlog日志列表 【show master logs;】查看master状态&#xff0c;即最后&#xff08;最新&#xff09;一个binlog日志的编号名称&#xff0c;及其最后一个操作事件pos结束点(Position)值。【show ma…

Net跨平台UI框架Avalonia入门-安装和使用

Avalonia UI是是Net的跨平台UI框架&#xff0c;支持 Windows、Linux、iOS 和 Android&#xff0c;与Net其他UI框架相比&#xff0c;主要是支持Linux。在国产化的需求下&#xff0c;对于C#开发的程序员&#xff0c;Avalonia适合用来开发Linux的桌面客户端。 Avalonia 安装 安装…

SpringBoot——日志

简单介绍&#xff1a; 在我们的程序开发中&#xff0c;日志的存在是必不可少的&#xff0c;日志可以帮助我们观察程序的运行过程&#xff0c;报错信息&#xff0c;各种警告&#xff0c;在我们调试程序的时候起到了非常大的作用。那么在SpringBoot中&#xff0c;我们在每次启动…

6.4.1最小生成树(Prim和kruskal算法)

生成树的概念&#xff1a; 连通图的生成树是包含图中全部顶点的一个极小连通子图 &#xff08;边尽可能的少&#xff0c;但要保持连通&#xff09; 若图中顶点数为n&#xff0c;则它的生成树中含有n-1条边。对于生成树而言&#xff0c;若看去他的一条边&#xff0c;则会变成…

软件测试太卷了,三个练手的软件测试实战项目偷偷提升自己(附全套视频跟源码)

项目一&#xff1a;12306抢票项目 项目测试目的 学会Selenium定位web元素的方法 熟练浏览器调试工具使用 项目主体步骤 1&#xff09; 人工走一遍流程&#xff0c;对自动化的流程心中有数 2&#xff09; 按步骤拆分&#xff0c;然后对每一个小步骤编写自动化脚本 3&#xf…

1.8G专网5G工业路由器助力智能电网-电力物联网方案

随着智能电网的普及与使用&#xff0c;电力终端的数量也日益剧增&#xff0c;由于间距较远、位置偏僻的特性&#xff0c;造成监管难、效率低、成本高等管理维护难题。 5G的价值也体现了由实验室走向垂直行业应用&#xff0c;赋予各行各业高效组网、高速用网的应用体验。智联物联…

PowerBi连接MySQL提示需安装组件才能使用,本人删去已经下载好的组件,再做一份详细教程。

问题 当我们用PowerBi连接Mysql时候&#xff0c;他突然提示我们需要安装组件。 解决 检查自己的MySQL版本 打开cmd运行框,输入命令mysql -uroot -p,再输入数据库密码 输入select version(); 我这里是8.0.16版本&#xff0c;记住自己的版本号 下载 mysql connector https:/…

在 EKS 上部署 HummerRisk

HummerRisk 是开源的云原生安全平台&#xff0c;以非侵入的方式解决云原生环境的安全和治理问题。核心能力包括混合云的安全治理和容器云安全检测。本文讲介绍如何在 EKS 上部署 HummerRisk。 EKS 简介 Amazon Elastic Kubernetes Service&#xff08;Amazon EKS&#xff09;…

python创建用户界面之PyQt5的使用

首先我们winR输入cmd 有两种方法下载PyQt5 方法一&#xff1a; pip install PyQt5 pip install PyQt5-tools 方法二&#xff1a; pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools -i https://pypi.douban.com/simple 下载好了之后我们打开 Pych…

idea热部署插件JRebel激活(强烈推荐,试试就离不开了)

JRebel可以实现在idea中热部署项目&#xff0c;修改后不用重启项目&#xff0c;让开发更丝滑。 JRebel需要激活才可以正常使用。 一、快速使用 1、idea安装JRebel插件。 File>Settings>Plugins 搜索JRebel 2、激活 1&#xff09;填写激活信息 个人部署的注册服务器&…

加密解密软件VMProtect教程(七):主窗口之控制面板“详情”部分

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

低代码与其拓荒,不如颠覆开发行业

目录 一、前言 二、低代码是一个值得信赖的“黑盒子” 粗略总结&#xff0c;开发者对低代码平台所见即所得设计器有两种反应&#xff1a; 三、人人都爱黑盒子 四、用“低代码平台”来开发是什么样的感受&#xff1f; 五、结论 一、前言 在科幻电影中&#xff0c;我们看到…

图片去底色,让您的产品瞬间脱颖而出

在现代社会中&#xff0c;图片是我们不可或缺的一部分&#xff0c;在各行业中都有着非常重要的作用。但是&#xff0c;有时候我们需要将某些图片中的背景去除&#xff0c;以便更好地突出主体&#xff0c;这时候&#xff0c;图片去底色就起到了非常重要的作用。 图片去底色的优…

论文、专利、文献检索及图像数据工具总结

一、文献检索 1、中文文献检索参考 中文文献途径网址用途1知网https://www.cnki.net/文献检索、下载2万方数据网https://www.wanfangdata.com.cn/文献检索、下载3维普期刊http://lib.cqvip.com/文献检索、下载4浙江图书馆https://www.zjlib.cn/#searchs_1_div文献检索、下载5…

一站式数据分析学习,让你成为一名合格的数据分析师

一站式数据分析学习&#xff0c;让你成为一名合格的数据分析师 随着数字化时代的到来&#xff0c;数字经济已然成为了新的发展潮流&#xff0c;数据的重要性越发显著。加上大数据、人工智能、云计算等数字技术的发展&#xff0c;让数字化时代的步伐迈得更快&#xff0c;目前已经…