【GitLab】流水线入门

  • (꒪ꇴ꒪ ),Hello我是祐言QAQ
  • 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
  • 快上🚘,一起学习,让我们成为一个强大的攻城狮!
  • 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏

        在GitLab中,流水线是一种 CI/CD(持续集成/持续交付)工具,用于自动化构建、测试和部署代码,实现自动化构建、测试和部署你的项目。它是一个在实际工作中很好用的工具,能在一定的测试开发中提高你的效率。

一、创建.gitlab-ci.yml文件

        在项目根目录下创建一个名为.gitlab-ci.yml的文件,用于定义流水线配置。这个文件使用YAML语法,其基本语法如下:

stages:- build- test- deployvariables:APP_NAME: myappbefore_script:- echo "Before script: Setting up environment..."build:stage: buildscript:- echo "Building the application..."test:stage: testscript:- echo "Running tests..."deploy:stage: deployscript:- echo "Deploying the application to production..."

        这是一个简单的例子,包含了三个阶段:构建(build)、测试(test)和部署(deploy)。每个阶段包含一个或多个作业(job),这些作业定义了要执行的具体命令。

        当然实际使用肯定不是这三步都要用到,或许你只希望它帮你自动化编译并压缩.so文件,那么就在build中直接写所有流程即可,无需按照该格式严格编写,但是你要知道它的所有功能是哪些,它能干什么。

二、提交并推送配置文件

       在前面有提到git的使用,如果你的.gitlab-ci.yml文件是在vs code这样的编辑器本地编写的那么就需要上传至gitlab仓库中(这里要说一下,每次上传流水线会默认触发的),或者在gitlab中直接创建并编辑,显然第二种方法更快。

        然后将.gitlab-ci.yml文件添加到Git仓库并推送到GitLab。如果你还不会使用git,点这里:

Git使用基础总结(从小白到新手版)-CSDN博客

        当然在日常使用中,你不一定非要按照上述的示例文件来配置.gitlab-ci.yml文件,只要把你想完成的操作写在build下即可,像这样:

# 定义流水线的阶段
stages:- build- deploy# 定义流水线中可能用到的变量
variables:DOCKER_IMAGE: “centos:7”# 定义 build 阶段
build:stage: build# 在 Docker 中构建镜像并运行编译脚本script:- docker build -t $DOCKER_IMAGE .  # 构建 Docker 镜像- docker run --rm $DOCKER_IMAGE /compile-script.sh  # 运行在容器内的编译脚本tags:- x86_64-centers7 # 定义产物(编译后的文件)的路径artifacts:paths:- compiled-so-files/lib/  # 编译产物的目录upload_to_nexus:stage: deployscript:- curl -v --upload-file mylib-so-files.tar.gz https://nexus.com/bin-package/only:- mastertags:- x86_64-centers7 

        在这个示例中,我们首先构建了一个doctor镜像来运行我们的脚本,脚本文件compile-script.sh是编好的脚本(将源码编译为镜像),然后将该镜像存入仓库,当然该仓库地址是虚拟的哈哈。

三、流水线到底是什么

        提到这个问题,我觉得大家第一次接触的时候都不会一下认识清楚这是一个怎样的工具,但当你真的用一次以后,你就会有所体会,我对于流水线的理解:它就是一个自动化工具,可以实现你想要且定义的一系列任务,无论是apt install make、 chmod 777还是上传仓库( - curl -v --upload-file mylib-so-files.tar.gz https://nexus.com/bin-package/only),它都可以完成(解决反复多次使用低级命令或搭建环境这样一个浪费时间的问题),并且是一个有记录的工具,它在什么时候完成了什么,出现的问题在哪都有记录。另外在流水线中你还可以构建doctor容器(一个容器化平台,用于轻量级、可移植、自包含的应用程序部署)或者你把它理解为一个干净的虚拟机,其中无任何环境包括简单插件,在这样的一个虚拟机中想要手动去完成各部分环境的搭建和部署是一件很难的事,这对应于将已经在成熟环境中写好但需要安装在新环境中那些繁琐的步骤,因此自动化部署成了最优解,这很节省时间。

四、运行流水线

1. 触发流水线

        提交你的代码到 GitLab 仓库,然后打开 GitLab 界面。在项目页面,你会看到一个名为“CI / CD”的选项卡,点击进入。

        在这个页面,你将看到最近的流水线记录。如果一切设置正确,新的提交将触发流水线的运行。

         一旦推送了配置文件,GitLab会自动检测到变更并开始执行流水线。你还可以手动触发流水线,通过GitLab网站上的界面找到相应的操作。极狐GitLab CI/CD 入门 | 极狐GitLab

2. 查看流水线结果

        在GitLab仪表板上,你可以查看流水线的执行过程和结果。这包括每个作业的执行日志、状态以及任何错误消息。

3. 监视流水线执行

        点击流水线记录,你将看到每个阶段的执行情况。你可以查看每个步骤的输出,以及任何错误或警告信息。

4. 调试和优化流水线

        如果流水线失败,不要惊慌。点击失败的阶段,查看详细的输出和错误信息。这将帮助你找到问题并进行修复。

        优化流水线也是一个逐步的过程。你可以添加更多的步骤、调整环境变量,以满足项目的需求。

五、结语

        通过 GitLab 流水线,你可以实现代码的自动构建、测试和部署,提高项目的可靠性和效率。希望这个入门指南能够帮助你顺利使用 GitLab 流水线,享受自动化的好处!

        更多C/C++语言Linux系统数据结构ARM板实战相关文章,关注专栏:

   手撕C语言

            玩转linux

                    脚踢数据结构

                            系统、网络编程

                                     探索C++

                                             6818(ARM)开发板实战

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉🎉🎉感谢关注🎉🎉🎉

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

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

相关文章

深入理解字符串函数和字符函数(二)

目录 strstr 的使用和模拟实现​ 简单的使用: 复杂情况下的使用 模拟实现strstr函数 用暴力求解的方式: strtok的使用 strerror 函数的使用​ strstr 的使用和模拟实现​ 作用:返回字符串在另外一个字符串中第一次出现的位置,即查找子…

Git 本地服务器搭建 Windows

git 安装参考:Git的安装、配置、使用01【Git Bash Here命令行操作】-CSDN博客 gitLab 服务端安装及配置参考:Windows环境搭建 Gitlab 服务器_gitlab windows_测试工程师成长之路的博客-CSDN博客

奇数求和(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

HMM预习中文版

马尔可夫模型 在之前的笔记中,我们讨论了贝叶斯网络,以及它们如何被用于紧凑地表示随机变量之间的关系。现在,我们将介绍一个与之紧密相关的结构,称为马尔可夫模型,对于本课程的目的,可以将其视为类似于链…

前端量子纠缠 效果炸裂 multipleWindow3dScene

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…

SELinux零知识学习三十七、SELinux策略语言之约束(1)

接前一篇文章:SELinux零知识学习三十六、SELinux策略语言之角色和用户(7) 四、SELinux策略语言之约束 SELinux对策略允许的访问提供了更严格的约束机制,不管策略的allow规则如何。 1. 近距离查看访问决定算法 为了理解约束的用途,先来看一下SELinux Linux安全模块(Lin…

Android : SQLite 增删改查—简单应用

示例图: 学生实体类 Student.java package com.example.mysqlite.dto;public class Student {public Long id;public String name;public String sex;public int age;public String clazz;public String creatDate;//头像public byte[] logoHead;Overridepublic St…

C#文件流FileStream类

目录 一、文件流类 1.FileStream类的常用属性 2.FileStream类的常用方法 3.使用FileStream类操作文件 二、文本文件的写入与读取 1.StreamWriter类 2.StreamReader类 3.示例及源码 三、二进制文件的写入与读取 1.BinaryWriter类 2.BinaryReader类 3.示例源码 数据流…

【NGINX--8】HTTP/2

1、基本配置 想要利用 HTTP/2。 在 NGINX 服务器上启用 HTTP/2: server {listen 443 ssl http2 default_server;ssl_certificate server.crt; ssl_certificate_key server.key;# ... }详解 要启用 HTTP/2,您只需要将 http2 参数添加到 listen 指令即可…

Python面经【6】

Python面经【6】 一、什么是Python的自省机制二、关于Python程序的运行方面,有什么手段可以提升性能三、dict的item()和iteritems()的不同四、说明一个os.path和sys.path分别代表什么五、说一下字典和json的区别六、什么是可变、不可变类型 一、什么是Python的自省机…

探究Kafka原理-7.exactly once semantics 和 性能测试

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理🔥如果感觉博主的文章还不错的话,请&#x1f44…

python基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中,我们已经以钢铁产业产品缺陷检测数据场景为基准,陆续开发构建了多款目标检测模型,感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否?基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

数据分析工具比较:Excel vs Python vs R

写在开头 在数据分析的世界里,选择合适的工具至关重要。本篇博客将深入比较常用的数据分析工具,包括Excel、Python和R,以帮助读者更好地选择适合自己需求的工具。 1.Excel:经典易用的电子表格 优势: 用户友好: Excel是大多数人熟悉的电子表格工具,使用简单,无需编程…

STM32之模数转换器ADC

目录 1、ADC介绍 1.什么是ADC? ADC的全称是Analog-to-Digital Converter,指模拟/数字转换器 2.ADC的性能指标 3.ADC特性 12位分辨率 4.ADC通道 5.ADC转换顺序 6.ADC触发方式 7.ADC转化时间 8.ADC转化模式 9.模拟看门狗 实验:使用ADC读…

Linux文件随机抽取N行并取json的某个字段

Linux文件随机抽取N行 shuf -n100 filename jq进行json处理 1) jq是一个出色的命令行针对-->JSON处理器,提供了用于查询、操作和使用JSON文件的大量功能,而且作为一个命令行工具,可配合UNIX管道使用,单行脚本处理JSON 2) jq可以对json数据进行分片、过滤、映射、转换;和se…

fastjson 1.2.24 反序列化导致任意命令执行漏洞

漏洞描述 fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。 通过查找代码中相关的方法,即可构造出一些恶意利用链。 参考资料: 浅谈Fastjson RCE漏洞的绕过史 - FreeB…

解决Hadoop DataNode ‘Incompatible clusterIDs‘报错

问题 启动hadoop时报错Failed to add storage directory 2023-11-26 12:02:06,840 WARN common.Storage: Failed to add storage directory [DISK]file:xxx java.io.IOException: Incompatible clusterIDs in xxx/dfs/data: namenode clusterID CID-xxxxxx; datanode cluste…

Postgresql数据库运维统计信息

如果需要使用以下运维信息,需要如下几步 修改postgresql.conf文件 #shared_preload_libraries # (change requires restart)shared_preload_libraries pg_stat_statements重启数据库创建扩展 CREATE EXTENSION IF NOT EXISTS pg_stat_statements;1. 统计信息…

ArrayList与顺序表的简单理解

前言----list 在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable也是一个接口,表示实现该接口的类是可以逐个元素进…

using meta-SQL 使用元SQL

%DatePart Syntax %DatePart(DTTM_Column) Description The %DatePart meta-SQL variable returns the date portion of the specified DateTime column. DatePart meta-SQL变量返回指定的DateTime列的日期部分。 Note: This meta-SQL variable is not implemented for COBOL. …