不先推代码,几秒跑完流水线:gitlab-ci-local 本地 CI 测试实操手册
不先推代码几秒跑完流水线gitlab-ci-local 本地 CI 测试实操手册【免费下载链接】gitlab-ci-localTired of pushing to test your .gitlab-ci.yml?项目地址: https://gitcode.com/GitHub_Trending/gi/gitlab-ci-local你改了 .gitlab-ci.yml 里一条 rules就得推送、等远程排队、几分钟后看它失败。gitlab-ci-local 把这个循环搬回本机不用 push整条流水线在本地跑几秒出结果。本地顶替远程 Runner 的工具gitlab-ci-local 是一个 TypeScript CLI读取你的 .gitlab-ci.yml展开 stages、rules、needs、cache、artifacts再用 shell 或 docker 执行器把 job 按顺序跑掉。说白了它是 GitLab Runner 的本地替身有三点要分清它不是 GitLab Runner 服务不替代服务器上的真流水线只做推送前验证不需要再维护一套 make 式的本地脚本yml 本身就是可执行的不只跑 shell 简单 jobjob 声明了 image 就能用 docker 执行器模拟容器环境三步跑通第一条本地流水线先装再在仓库目录里直接跑。Debian 系可用 apt 装macOS 用 brewnpm 最通用npm install -g gitlab-ci-local gitlab-ci-local只要当前目录有 .gitlab-ci.yml 就能直接跑git 上下文由它自己处理配置放在别处时加 --file doctor-strange.yml。跑完会看到各 stage、各 job 的日志job 失败会像服务器上一样中断流水线。先学会这三个最有用的功能--list 先预览再执行。跑之前先看会加入哪些 job、各在哪个 stage、依赖谁when: never 的 job 会被自动过滤gitlab-ci-local --list输出是 name、description、stage、when、allow_failure、needs 几列的表格整条流水线一眼看全--list-csv 则给脚本用。Description 给 job 加人话备注。在 job 上方写一行注释就会出现在 --list 表格里不熟悉流水线的同事也能看懂每个 job 干嘛# Description Install npm packages npm-install: image: node script: - npm install --no-audit变量文件把机密留在仓库外。默认读取 .gitlab-ci-local-variables.yml写进去的值对 job 就是普通 CI/CD 变量AUTHORIZATION_PASSWORD: djwqiod910321 DOCKER_LOGIN_PASSWORD: dij3213n123n12in3再把它加进 .gitignore 即可放到 $HOME/.gitlab-ci-local/variables.yml 下还能按仓库、group 或全局分级下发。拿官方示例走一遍看制品怎么流转examples/docker-compose-nodejs 里有个完整演示npm-install 装依赖并把 node_modules/ 作为 artifacts 产出npm-audit 和 npm-outdated 做安全扫描和版本检查最后 docker-compose-up 用 docker compose 起一个 webserver 容器。一条命令跑完整流程gitlab-ci-local --cwd examples/docker-compose-nodejs/产出的不只是日志npm-install 的 artifacts 会传给下游 jobcompose 容器真的会启动。玩完再手动跑 docker-compose-down 这个 job 停掉服务之后改镜像、加 job 随便折腾不用碰远程仓库。源码结构与测试怎么组织项目用 TypeScript 写、Bun 构建核心逻辑按职责切分src/parser.ts 负责 .gitlab-ci.yml 的解析与展开extends、include、变量src/executor.ts 管 job 的执行顺序与并发src/job.ts 管单个 job 的容器生命周期src/validator.ts 按 schema 校验配置。测试基于 vitesttests/test-cases/ 下有 162 个场景目录比如 needs-parallel、include-project-file排查某个具体行为时很顺手bunx vitest run 指向单个目录即可只跑那一个。独立二进制由 bun build --compile 打出覆盖 Linux、macOS、Windowsnpm 分发的是面向 Node 的 dist 包两条路线互不影响。常见报错与进阶开关job 里看不到未提交的文件 → 隔离 job 只同步 tracked 文件先 git add 再跑外部 include 内容没更新 → 外部 include 只拉一次并缓存加 --fetch-includes 强制重拉某个 job 只想在本地跑 → rules 里写 if: $GITLAB_CI false本地才执行、服务器上跳过shell job 的制品污染了工作目录 → 加 --shell-isolation 模拟服务器侧的制品处理配置文件不叫 .gitlab-ci.yml → --file 指定或用 GCL_FILE、GCL_NEEDS、GCL_TIMESTAMPS 这类环境变量预设跑全量太慢 → 把 job 名直接当参数传进去只跑那一个 job文件一保存流水线已经在跑了推送—等待—失败的循环到此为止。源码在https://gitcode.com/GitHub_Trending/gi/gitlab-ci-localgit clone 用issue 和 PR 都欢迎提。【免费下载链接】gitlab-ci-localTired of pushing to test your .gitlab-ci.yml?项目地址: https://gitcode.com/GitHub_Trending/gi/gitlab-ci-local创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

STM32+华为云IoT+Qt:从0到1搭建跨平台智能家居控制系统

STM32+华为云IoT+Qt:从0到1搭建跨平台智能家居控制系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:58:53 阅读更多 →
Ubuntu16.04 下 UltraEdit 安装与授权配置:从下载到可用的完整流程

Ubuntu16.04 下 UltraEdit 安装与授权配置:从下载到可用的完整流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:58:53 阅读更多 →
MCP初学者指南(3):用TaoToken统一Key打通Cline MCP配置

MCP初学者指南(3):用TaoToken统一Key打通Cline MCP配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:58:53 阅读更多 →

最新新闻

Deep Agents框架:AI代理核心任务规划与分解实战解析

Deep Agents框架:AI代理核心任务规划与分解实战解析

先聊个我最近遇到的典型场景。某次我给一个自己搭的Agent下达任务:“帮我整理本周行业资讯,输出一份简报”。结果它整整回复了八百字,格式工整、措辞得体,可仔细一看,全是通用建议——没有真正的资讯来源,没…

2026/10/18 2:38:02 阅读更多 →
Spring Boot整合Redis实战:序列化、缓存穿透与高并发踩坑复盘

Spring Boot整合Redis实战:序列化、缓存穿透与高并发踩坑复盘

写这篇文章之前,先说个我最近帮一个同事排查问题的场景。他负责的接口加上了 Redis 缓存,但并发一高,数据库还是被冲垮了。我登上去一看,缓存 key 是一串 \xAC\xED 开头的二进制乱码,value 也是 JDK 序列化对象&#x…

2026/10/18 2:38:02 阅读更多 →
AI辅助教材编写如何降低查重率?从初稿到改稿的完整实践方法

AI辅助教材编写如何降低查重率?从初稿到改稿的完整实践方法

写教材这事,听起来是专家干的活,但这两年,越来越多的老师、培训讲师、课程开发者开始用AI辅助编写教材和讲义。我的感受是,AI写初稿是真快,但交出去的稿子质量和查重率往往让人头大。初稿太像“翻译腔”或“论文摘要合…

2026/10/18 2:38:02 阅读更多 →
游戏开发必知的10大测试术语揭秘

游戏开发必知的10大测试术语揭秘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:38:02 阅读更多 →
用游戏讲透环境变量的神奇作用

用游戏讲透环境变量的神奇作用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:38:02 阅读更多 →
回归预测可视化指南:用sklearn和matplotlib绘制真实值与预测值对比图

回归预测可视化指南:用sklearn和matplotlib绘制真实值与预测值对比图

回归模型跑完之后,很多人第一件事就是看R和MSE,数字漂亮就认为万事大吉。但我一直觉得,指标只是结果的高度浓缩,真正能暴露模型问题的,是把测试集真实值和模型预测值画在同一张图上,看曲线走势、看偏差分布…

2026/10/18 2:37:02 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →