gitlab 服务 CI/CD 配置
使用Gitlab作为工作仓库进行代码发布及版本控制Gitlab内置了CI/CD的工具这些工具可以用于代码提交的同时完成镜像构建、自动化测试、自动化部署等连续的工作CI: Continuous Integration持续集成CD: Continuous Delivery连续交付CD: Continuous Deployment持续部署这里暂时只讨论CI持续集成部分的工作我们常用CI来做一些自动化工作这种自动化工作会运行在一台集中的机器上比如程序镜像的打包单元测试部署等它可以节省项目开发迭代过程中维护正确的代码所耗费的时间。例比如CI中自动测试在多人协同开发的过程中可能会有频繁的不同分支的代码推送更新使用CI管道可在代码发布的同时触发CI中定义的单元测试操作以便于在开发早期发现错误从而确保所有新代码的提交都不影响项目功能。依赖服务gitlabhttps://www.zongscan.com/demo333/95354.htmlgitlab-runnerhttps://www.zongscan.com/demo333/95355.html后面有时间我也会把我自己的beego项目迁移进docker swarm集群里面来整成自动化持续集成部署方式。1. Gitlab-CI/CD工作流参考下图先了解CI/CD的具体工作流和概念黄色部分为主要涉及的概念将在后文重点说明你当前的代码库托管在Gitlab上且已经为代码仓库配置了gitlab-runner服务它是用来实际执行CI任务的服务器提交代码且根目录中包含一个名为.gitlab-ci.yml文件该文件是用来指定构建、测试和部署流程、以及CI触发条件的脚本其概念类似于docker-compose.yml文件Gitlab检测到.gitlab-ci.yml文件若当前提交符合文件中指定的触发条件则会使用配置的gitlab-runner服务运行该脚本进行测试等工作若.gitlab-ci.yml中定义的某个自动化脚本运行失败将判定为此次CI不通过则需要提交者修复问题代码后重复提交直至自动化CI通过。没有问题的提交才能被项目负责人merge到主分支进行后续的部署工作此文暂不涉及CD自动化部署2. 配置文件介绍.gitlab-ci.yml文件主要的作用是用来指定构建、测试和部署流程、以及CI触发条件的脚本在文件中的定义要运行的脚本要包含的其他配置文件和模板依赖项和缓存要按顺序运行的命令和要并行运行的命令将应用程序部署到的位置。无论您是想自动运行脚本还是手动触发其中的任何一个。脚本被分组到作业中作业作为更大管道的一部分运行。您可以将多个独立作业分组到按定义顺序运行的阶段。CI/CD 配置至少需要一项未隐藏的作业。您应该按照适合您的应用程序并符合您希望执行的测试的顺序组织您的工作。为了可视化该过程假设您添加到作业的脚本与您在计算机上运行的 CLI 命令相同。当您将 .gitlab-ci.yml 文件添加到存储库时GitLab 会检测到它并且名为 GitLab Runner 的应用程序会运行作业中定义的脚本。3. 参数列表值是否必须描述script必须定义由Runner执行的shell脚本或命令extends非必须定义此作业将继承的配置条目image非必须需要使用的docker镜像请查阅该文档services非必须定义所需的docker服务请查阅该文档stage非必须定义一个工作场景阶段默认是testtype非必须stage的别名不赞成使用variables非必须在job级别上定义的变量only非必须定义job所引用的git分支except非必须定义job所不适用的git分支tags非必须定义job所适用的runnertags为runner标签allow_failure非必须when 用于实现在发生故障或发生故障时运行的作业。when 可以设置为以下值之一on_success-仅当先前阶段中的所有作业都成功或因为已标记被视为成功allow_failure时才执行作业。这是默认值。on_failure -仅在前一阶段中的至少一项作业失败时才执行作业。always -执行作业而不管先前阶段的作业状态如何。manual-手动执行作业在GitLab 8.10中已添加.delayed-一定时间后执行作业在GitLab 11.14中已添加。when非必须定义了job什么时候执行可以是on_success、on_failure、always和manualdependencies非必须定义了该job依赖哪一个job如果设置该项可以通过artifacts设置artifacts非必须工件在依赖项之间传递的东西类似cache但原理与cache不同cache非必须定义需要被缓存的文件、文件夹列表before_script非必须覆盖在作业之前执行的脚本或命令after_script非必须覆盖在作业之后执行的脚本或命令environment非必须定义让job完成部署的环境名称coverage非必须定义job设置代码覆盖率stages非必须定义pipeline的全部阶段stage阶段内所有任务并行执行全部执行成功开始下一阶段任务任何阶段内任意job执行失败都会导致pipeline失败所有stagejob执行成功后pipeline会显示pass。如果未定义stages则默认有build、test、deploy三个阶段如果未定义stage则默认test阶段rules非必须用于评估和确定作业的选定属性以及是否创建该作业。不能与only/except 一起使用include非必须允许此作业包括外部YAML文件。也可用include:localinclude:fileinclude:template和include:remote。interruptible非必须定义在通过新的运行使其冗余时是否可以取消作业。resource_group非必须限制作业并发。timeout非必须定义自定义作业级别的超时该超时优先于项目范围的设置。4. 编写说明.gitlab-ci.yml文件中指定了CI的触发条件、工作内容、工作流程编写和理解此文件是CI实战中最重要的一步该文件指定的任务内容总体构成了1个pipeline、1个pipeline包含不同的stage执行阶段、每个stage包含不同的具体job脚本任务。4.1. 配置文件说明4.2. Pipeline说明一个.gitlab-ci.yml文件触发后会形成一个pipeline任务流由gitlab-runner来运行处理pipeline中stage、job概念如下需要按照项目实际情况定义不同stage和job 自己绘制了一个流程示意图帮助理解:5. 示例stages: - build - test build-code-job: stage: build script: - echo Check the ruby version, then build some Ruby project files: - ruby -v - rake test-code-job1: stage: test script: - echo If the files are built successfully, test some files with one command: - rake test1 test-code-job2: stage: test script: - echo If the files are built successfully, test other files with a different command: - rake test2参考文献gitlab服务之gitlab-ci.yml配置文件详解-侯体宗的博客GitLab之gitlab-ci.yml配置文件最全参数解读 - 知乎Gitlab-CI使用及.gitlab-ci.yml配置入门 - 测试开发喵 - 博客园

相关新闻

KannalaBrandt8 鱼眼相机模型

KannalaBrandt8 鱼眼相机模型

1. 鱼眼相机 鱼眼相机镜头是由十几个不同的透镜组合而成,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头拥有更大的视野范围。下图为鱼眼相机的组成结构: 与针孔相机原理不同&a…

2026/7/10 13:10:10 阅读更多 →
5分钟掌握网盘直链解析:告别龟速下载的终极解决方案

5分钟掌握网盘直链解析:告别龟速下载的终极解决方案

5分钟掌握网盘直链解析:告别龟速下载的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

2026/7/10 13:10:10 阅读更多 →
模型响应速度差3.8倍,文件解析上限缩水92%,ChatGPT Plus与免费版关键差异全解析,现在看还来得及

模型响应速度差3.8倍,文件解析上限缩水92%,ChatGPT Plus与免费版关键差异全解析,现在看还来得及

更多请点击: https://codechina.net 第一章:ChatGPT Plus与免费版的核心差异概览 ChatGPT Plus 是 OpenAI 提供的订阅服务,面向对响应速度、功能可用性及模型能力有更高要求的用户;而免费版则基于基础模型(如 GPT-3.5…

2026/7/10 13:08:09 阅读更多 →

最新新闻

企业AI落地的3个真相,90%的人都搞反了

企业AI落地的3个真相,90%的人都搞反了

前一日, 和一位经营工厂的昔日同窗一道饮酒, 彼时, 他陡然向我发问: 人工智能究竟可不可以为我削减开支呢? 我愣了一下。这问题看着简单,但背后藏着太多弯弯绕绕。 他在去年的时候, 跟着潮流购买了一套AI工具, 居然花费了十几万。那后来呢? 使用了一个月之后, 员…

2026/7/10 14:07:54 阅读更多 →
(25-7-01)

(25-7-01)

13.5 embed_documents方法:用于将一组文本嵌入为向量。首先将文本列表转换为PaddleNLP要求的格式,然后通过text_encoder进行嵌入,并将结果转换为Python列表返回。embed_query方法:用于将单个文本嵌入为向量。与embed_documents方…

2026/7/10 14:07:54 阅读更多 →
酷安UWP客户端:Windows电脑端畅享酷安社区完整指南

酷安UWP客户端:Windows电脑端畅享酷安社区完整指南

酷安UWP客户端:Windows电脑端畅享酷安社区完整指南 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 想在Windows电脑上享受酷安社区的全功能体验吗?酷安UWP客户端为…

2026/7/10 14:03:53 阅读更多 →
Fable 5与Opus 4.8对比:AI Agent开发实战与企业级应用指南

Fable 5与Opus 4.8对比:AI Agent开发实战与企业级应用指南

这次我们来看一个关于 AI Agent 开发的实战案例。项目标题直接点出了核心:Fable 5 在 Agent 功能实现上相比 Opus 4.8 有了质的飞跃,让公司内部工具的智能体功能变得丝滑好用。对于正在探索 AI Agent 落地的开发者来说,这个对比结果很有参考价…

2026/7/10 14:03:53 阅读更多 →
Nature|首个经过完整同行评审、配套真实湿实验的AI科研智能体证据

Nature|首个经过完整同行评审、配套真实湿实验的AI科研智能体证据

Nature刊发2套AI「科研助手」孪生系统,可设计并解析真实实验Google DeepMind的Co-Scientist与FutureHouse的Robin于本周同步完成同行评审,2者针对白血病、黄斑变性筛选出候选药物,且相关结果均通过实验室实操验证。#Na…

2026/7/10 14:01:52 阅读更多 →
nodejs-websocket实战案例:构建实时聊天应用的完整指南

nodejs-websocket实战案例:构建实时聊天应用的完整指南

nodejs-websocket实战案例:构建实时聊天应用的完整指南 【免费下载链接】nodejs-websocket A node.js module for websocket server and client 项目地址: https://gitcode.com/gh_mirrors/no/nodejs-websocket 想要构建高性能的实时聊天应用吗?n…

2026/7/10 14:01:52 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻