【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)开发板实战
📢写在最后
- 今天的分享就到这啦~
- 觉得博主写的还不错的烦劳
一键三连喔~ - 🎉🎉🎉感谢关注🎉🎉🎉
相关文章:
【GitLab】流水线入门
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...
es 中文前缀短语匹配(搜索智能补全)
需求:es进行前缀匹配,用来进行智能补全 过程:es正常的prefix只能进行词语匹配,而中文的分词大部分按字分词,不按语义分词,所以无法搜索出正确的前缀匹配,而能进行短语匹配的match_phrase_prefix…...
机器学习之决策树及随机森林
决策树 概念 决策树(Decision Tree)是一种常见的机器学习算法,用于分类和回归任务。它是一种树状结构,其中每个内部节点表示一个特征或属性,每个分支代表一个决策规则,而每个叶节点表示一个输出标签或值。 构建决策树过程 构建决策树的过程通常涉及以下步骤: 数据准…...
用通俗的方式讲解Transformer:从Word2Vec、Seq2Seq逐步理解到GPT、BERT
直到今天早上,刷到CSDN一篇讲BERT的文章,号称一文读懂,我读下来之后,假定我是初学者,读不懂。 关于BERT的笔记,其实一两年前就想写了,迟迟没动笔的原因是国内外已经有很多不错的资料࿰…...
数据结构-01-数组
每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。 1-数组的概念和特性 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来…...
甘草书店记: 2023年10月11日 星期三 晴 「做有光的人,照亮他人,也引人同行」
发了两篇《甘草书店记》,书店计划公之于众,收获了不少人的赞扬和鼓励,来自生活中的友人,来自麦田的客户和朋友,来自图书界的同行前辈,也来自商界的同仁。其中,最特别留言来自甘草书店投资方的张…...
让 OpenAI GPT4 出 10 道题测试其他开源大语言模型
让 OpenAI GPT4 出 10 道题测试其他开源大语言模型 1. 中文题目及答案2. 日文题目及答案3. 英文题目及答案 1. 中文题目及答案 数学题:一个矩形的长是10厘米,宽是5厘米,求它的面积。 答案:面积 长 x 宽 10厘米 x 5厘米 50平方厘…...
动态库与静态库
1. 库 是代码的二进制的封装形式 在其他的源代码或库中,可以直接调用库的,但是又看不到它 没有公开源代码 库的这种实现方法有利于模块化 而且只要接口合理 不影响库的使用的 sum.c sum.h int sum(int a,int b) { return ab; } xxx.c 需要使用…...
pdf文件编辑,[增删改查]
pdf文件是投标文件中必不可少的格式,传统的方式先编辑word格式,最后生成pdf,但是有时候需要直接编辑pdf文件,编辑pdf的工具无疑 “adobe acrobat dc”是最好用的之一了 1.把图片文件添加到pdf指定位置,例如把一张图片添…...
如何与LEONI建立EDI连接?
莱尼LEONI是一家为汽车及其他行业提供能源数据管理产品、解决方案及服务的全球供应商。供应链范围从研发生产标准化电缆、特种电缆和数据电缆到高度复杂的布线系统和相关组件。本文将介绍如何与莱尼LEONI建立EDI连接。 什么是EDI? EDI全称Electronic Data Interch…...
算法中的时间复杂度,空间复杂度
一、前言 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别 衡量不同算法之间的优劣主要是通过时…...
Python基础:推导式(Comprehensions)详解
1. 推导式概念 Python推导式(comprehensions)是一种简洁而强大的语法,用于从已存在的数据(列表、元组、集合、字典等)中创建新的数据结构。推导式包括: 列表推导式元组推导式字典推导式集合推导式 2. 列表…...
安防监控视频融合平台EasyCVR定制化页面开发
安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索…...
Roll-A-Ball 游戏
Roll-A-Ball 游戏 1)学习资料 b站视频教程:https://www.bilibili.com/video/BV18W411671S/文档: * Roll-A-Ball 教程(一), * Roll-A-Ball 教程(二)线上体验roll-a-ball成品 * http://www-personal.umich.e…...
医疗影像数据集—CT、X光、骨折、阿尔茨海默病MRI、肺部、肿瘤疾病等图像数据集
最近收集了一大波关于CT、X光等医疗方面的数据集包含骨折、阿尔茨海默病MRI、肺部疾病等类型的医疗影像数据,废话不多说,给大家逐一介绍!! 1、彩色预处理阿尔茨海默病MRI(磁共振成像)图像数据集 彩色预处理阿尔茨海默病MRI(磁共…...
Linux僵死进程及文件操作
1.僵死进程(僵尸进程): 1.僵死进程产生的原因或者条件: 什么是僵死进程? 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程. 简而言之,就是子进程先结束,并且父进程没有获取它的退出码; 那么僵死进程产生的原因或者条件就是:子进…...
用Python写一个浏览器集群框架
更多Python学习内容:ipengtao.com 在分布式爬虫和大规模数据采集的场景中,使用浏览器集群是一种有效的方式,可以提高数据采集的速度和效率。本文将介绍如何用Python编写一个简单但强大的浏览器集群框架,以应对需要使用多个浏览器实…...
【Github】git安装
我们经常需要对github上的项目进行复现或者使用,git指令可以方便我们更好地实现他们。 Part 0. 准备 配置代理IP 面对问题:关于登陆github网站网速慢、下载git项目网速慢。 解决:无论是windows还是linux系统,都可以找到/etc/ho…...
sql语法大全
1,创建数据库 create database 数据库名字; 2,查看所有的数据库名称 show databases; MySQL服务器已有4个数据库,这些数据库都是MySQL安装时自动创建的。 information_schema 和 performance_schema 数据库分别是 MySQL 服务器的数据字典(…...
小红书API接口测试 | 小红书笔记详情 API 接口测试指南
一、引言 随着互联网的发展,越来越多的应用开始使用API接口来提供服务。而API接口的测试也变得越来越重要。本文将介绍如何使用Python语言进行小红书笔记详情API接口的测试。 二、小红书笔记详情API接口介绍 小红书笔记详情API接口是用于获取指定笔记详细信息的接…...
多平台内容同步利器:面向教育工作者的开源推流方案
多平台内容同步利器:面向教育工作者的开源推流方案 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 在数字化教学日益普及的今天,教育工作者常常面临一个挑战&…...
5个进阶技巧:掌握ControlNet-v1-1_fp16_safetensors的图像生成调优
5个进阶技巧:掌握ControlNet-v1-1_fp16_safetensors的图像生成调优 【免费下载链接】ControlNet-v1-1_fp16_safetensors 项目地址: https://ai.gitcode.com/hf_mirrors/comfyanonymous/ControlNet-v1-1_fp16_safetensors ControlNet-v1-1_fp16_safetensors为…...
CPV10-GE-DN3-8控制阀端子
CPV10-GE-DN3-8控制阀端子是一款应用于气动控制系统中的关键连接与分配单元,主要用于阀岛系统中的信号与气路接口管理,具备结构紧凑、连接可靠等特点,广泛应用于自动化生产线及工业控制领域。模块化设计,便于系统扩展与组合使用接…...
开源工具KMS_VL_ALL_AIO:Windows与Office激活完整解决方案
开源工具KMS_VL_ALL_AIO:Windows与Office激活完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在数字化办公环境中,软件授权管理是每个用户和企业必须面对的基…...
ESP居然能当 DNS 服务器用?内含NCSI欺骗和DNS劫持实现汉
前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...
MySQL8.0大小写敏感坑爹实录:lower_case_table_names从报错到解决的完整过程
MySQL 8.0大小写敏感参数避坑指南:从报错到根治的深度实践 最近在迁移开发环境到Docker时,遇到了一个令人头疼的问题——MySQL 8.0服务无法启动,报错提示Different lower_case_table_names settings for server (2) and data dictionary (0)。…...
【VirtualBox】Vbox 7.2.6 不让安装在其他盘?这篇保姆级权限修复指南让你 D 盘起飞
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【VirtualBox】Vbox 7.2.6 不让安装在其他盘?这篇保姆级权限修复指南让你 D 盘起飞…...
基恩士VL扫描仪:高效检测场景的适配之选
一、引言企业选购3D扫描仪时,“哪个品牌性价比高”是核心决策难题。性价比并非单纯看价格高低,而是精度、效率、操作成本与长期服务的综合平衡,这也是企业筛选3D扫描仪品牌的核心评判维度。当前制造业检测流程优化需求迫切,接触式…...
Qwen3-14B镜像部署案例:汽车4S店智能顾问系统客户问答落地
Qwen3-14B镜像部署案例:汽车4S店智能顾问系统客户问答落地 1. 项目背景与需求分析 在汽车销售与服务行业,4S店每天需要处理大量客户咨询,包括车型参数、购车政策、维修保养等各类问题。传统客服模式面临三大痛点: 人力成本高&a…...
3.3《深入浅出:嵌入式通信基石——邮箱(Mailbox)与管道(Pipe)全解析》
通信基石初探:为何需要邮箱与管道? 昨天深夜调试一个多核通信的问题,第三遍看代码时突然意识到:两个核之间那段共享内存区域,竟然被双方同时写入了不同的配置参数。瞬间的冷汗让人彻底清醒——这已经不是第一次栽在数据同步上了。嵌入式系统里,任务间、核间、进程间的数…...
