CI 产物写满本地盘?用 RustFS 给 GitLab 当 S3 对象存储后端

发布时间:2026/8/20 10:39:11

CI 产物写满本地盘?用 RustFS 给 GitLab 当 S3 对象存储后端
一台 8 核 16G 的 GitLab 机器CI 跑完的制品默认落在本机/var/opt/gitlab/gitlab-rails/shared/artifacts。我见过最离谱的一次团队一天 400 多条流水线半个月后磁盘三度写满运维半夜起来gitlab-ctl reconfigure清目录。问题的根子不在 GitLab而在于「产物堆本地盘」这个默认行为——它把存储压力和单台机器绑死了。GitLab 从 10.x 起就支持把这类数据甩给外部对象存储。关键是它走的是标准 S3 协议只要端点是 S3 兼容的换一家后端基本只改配置。RustFS 100% 兼容 S3 API又有 OIDC 单点登录能力把它接成 GitLab 的对象存储加控制台身份源是一条很顺的路。下面按我实际验证过的步骤走一遍。一、GitLab 到底能往对象存储塞什么不是只有 CI 产物。以下这些数据类型GitLab 都能配置到外部 S3 后端八类数据配置项都是gitlab.rb里独立的xxx_object_store_*开关。想全接就全接只想把最占空间的 CI 产物挪出去也行。二、把 RustFS 配成 GitLab 的 S3 后端先在 RustFS 侧建两个桶比如gitlab-artifacts和gitlab-lfs。然后改 GitLab 的/etc/gitlab/gitlab.rbgitlab_rails[object_store][enabled]truegitlab_rails[object_store][proxy_download]truegitlab_rails[object_store][connection]{providerAWS,aws_access_key_idrustfsadmin,aws_secret_access_keyrustfsadmin,endpointhttps://rustfs.example.com,regionus-east-1,path_styletrue}gitlab_rails[artifacts_object_store_enabled]truegitlab_rails[artifacts_object_store_remote_directory]gitlab-artifactsgitlab_rails[lfs_object_store_enabled]truegitlab_rails[lfs_object_store_remote_directory]gitlab-lfsendpoint指向你的 RustFS 地址provider填AWS走 Signature V4。有一个坑要提前说path_style必须设成true。GitLab 默认用虚拟主机式寻址bucket.endpoint/key而 RustFS 走路径式寻址endpoint/bucket/key不开 path_styleGitLab 上传会一直报找不到桶。改完跑sudogitlab-ctl reconfigure验证最简单的方法开一条最小流水线推一个带artifacts的 job再去看 RustFS 桶里有没有落到对象。别急着迁存量——下面会说为什么。三、让 GitLab 用户用 GitLab 账号登录 RustFS 控制台光有存储还不够。如果你的团队已经在用 GitLab 做统一身份可以让 GitLab 充当 OIDC 身份源RustFS 控制台直接用 GitLab 账号登录不用再维护一套 RustFS 本地账号。先在 GitLab 的 Admin Area → Applications → New application 建一个应用NameRustFS OIDCRedirect URIhttps://rustfs.example.com/rustfs/admin/v3/oidc/callback/default勾选Confidential和TrustedScopes 选openid、profile、email保存后拿到 Application ID 和 Secret。然后在 RustFS 的环境文件里加上RUSTFS_IDENTITY_OPENID_ENABLEonRUSTFS_IDENTITY_OPENID_CONFIG_URLhttps://gitlab.example.comRUSTFS_IDENTITY_OPENID_CLIENT_IDapplication-idRUSTFS_IDENTITY_OPENID_CLIENT_SECRETapplication-secretRUSTFS_IDENTITY_OPENID_SCOPESopenid,profile,emailRUSTFS_IDENTITY_OPENID_REDIRECT_URIhttps://rustfs.example.com/rustfs/admin/v3/oidc/callback/defaultRUSTFS_IDENTITY_OPENID_DISPLAY_NAMEGitLabRUSTFS_IDENTITY_OPENID_EMAIL_CLAIMemailRUSTFS_IDENTITY_OPENID_USERNAME_CLAIMpreferred_usernameRUSTFS_IDENTITY_OPENID_ROLE_POLICYconsoleAdmin重启 RustFS 后控制台登录页会出现 GitLab 按钮。整个登录链路长这样校验环节很关键别跳过。先看 GitLab 的发现文档通不通curl-fsShttps://gitlab.example.com/.well-known/openid-configuration\|jq{ issuer, authorization_endpoint, token_endpoint, jwks_uri }再确认 RustFS 侧能看到这个 providercurl-fsShttps://rustfs.example.com/rustfs/admin/v3/oidc/providers|jq两个都返回预期字段再点登录按钮实测一遍。四、几个会咬人的坑集成不难难在边界。我列几个实测和官方排障文档里反复出现的点ROLE_POLICY默认consoleAdmin太宽。这个变量给所有走 GitLab 登录的人发同一个策略。生产环境换成只含所需权限的自定义策略别把整个集群的管理权让出去。存量本地产物不会自动搬家。开启对象存储后之前堆在/var/opt/gitlab/.../artifacts的文件不会自己迁过去新的才落桶。要迁得另写同步脚本且要停写窗口别指望开关一开就万事大吉。HTTPS 生产必开。OIDC 回调、S3 凭证和 token 全程走网络明文部署等于把密钥摊在公网上。GitLab 对对象存储有隐性预期。比如部分功能依赖桶版本化、特定的列举一致性。上线前对着 GitLab 官方「object storage」文档把每一项特性核对一遍别只看 CI 产物能传就认为全通了。RustFS 目前还是 BetaGA 预计 2026 年 9 月。承载生产 CI 之前先在开发、测试环境跑你自己的真实负载基准尤其看写入吞吐和列举延迟是否够用。五、先做什么如果你正被本地盘写满困扰今晚就能动手验证用 Docker 起一个 RustFS 单节点建gitlab-artifacts、gitlab-lfs两个桶在gitlab.rb里只开artifacts_object_storeendpoint指过去path_style设true推一条最小流水线确认产物落到 RustFS 桶跑通后再逐步把 LFS、packages、uploads 等其它类型切过去最后再接 OIDC把ROLE_POLICY收敛成最小权限策略。对象存储后端换成 S3 兼容的 RustFS 之后GitLab 的存储压力不再绑死在单台机器上扩容就是加盘或加节点的事。RustFS 本身是 Apache 2.0、用 Rust 写的分布式对象存储对写入密集的 CI 产物场景比较友好仓库在 https://github.com/rustfs/rustfs 想深究可以直接翻代码和 issue。以下是深入学习 RustFS 的推荐资源RustFS官方文档 RustFS 官方文档- 提供架构、安装指南和 API 参考。GitHub 仓库 GitHub 仓库 - 获取源代码、提交问题或贡献代码。社区支持 GitHub Discussions- 与开发者交流经验和解决方案。意见反馈GitHub Issues

相关新闻

TypeScript 7 编译性能深度优化:从原理到实战的完整指南

TypeScript 7 编译性能深度优化:从原理到实战的完整指南

2026/8/20 10:39:11

最近在 TypeScript 社区里,一个重磅消息引发了广泛讨论:TypeScript 7 的发布带来了前所未有的编译速度提升。对于长期受困于大型项目编译缓慢的开发者来说,这无疑是一剂强心针。本文将深入解析 TypeScript 7 在性能优化上的核心改进&#xff…

办公文档格式乱转不动?多款文档转换工具能力客观记录

办公文档格式乱转不动?多款文档转换工具能力客观记录

2026/8/20 10:39:11

日常办公整理资料、接收外来文件时,常会遇到文档格式不兼容,需要在 PDF、Word、图片、网页格式之间互相转换。不同文档转换工具在格式兼容、排版还原、批量处理、扫描件识别能力上存在明显区别。下文客观记录五款文档转换相关工具的基础能力与使用局限&a…

Linux网络故障排查:从TCP/IP原理到实战命令全解析

Linux网络故障排查:从TCP/IP原理到实战命令全解析

2026/8/20 10:29:11

在实际 Linux 运维和开发工作中,网络连接故障是最常见也最令人头疼的问题之一。无论是服务无法访问、端口不通、连接超时,还是数据传输缓慢,其根源往往隐藏在 TCP/IP 协议栈的某个环节。很多工程师习惯于遇到问题就重启服务或服务器&#xff…

文献综述还在“码字砌墙”?毕夏AI正在把它变成“学术探案”

文献综述还在“码字砌墙”?毕夏AI正在把它变成“学术探案”

2026/8/20 14:19:20

作为一名教论文写作的教育博主,我观察到一件非常有趣的事:很多同学写文献综述的方式,和砌墙几乎一模一样。下载20篇论文,精读后划线,把“有用的句子”摘出来,然后按“谁说了什么”的顺序一块一块码上去。墙…

AI 模型在电机异音检测中的选型与实战

AI 模型在电机异音检测中的选型与实战

2026/8/20 14:19:20

导语前几篇文章我们围绕信号采集、时频域分析和特征提取,搭建了一套完整的异音检测"前端"链路。传感器采集振动信号、ADC量化、工控机做滤波和 FFT/STFT 变换、再提取 RMS、峭度、峰峰值、PSD 等特征——这些步骤解决的是"数据怎么来"和"数…

二乙二醇丁醚 DB 品牌对比,采购该怎么参考?--广州伟泽新材料有限公司

二乙二醇丁醚 DB 品牌对比,采购该怎么参考?--广州伟泽新材料有限公司

2026/8/20 14:19:20

二乙二醇丁醚 DB 广泛应用于油墨、工业漆、电子清洗等领域,市场上流通多个品牌货源,不少采购在选型时会进行二乙二醇丁醚 DB 品牌对比,希望找到适配生产线、性价比均衡的原料。不同品牌原料在提纯工艺、杂质管控上存在区别,适配场…

晶圆超声波清洗机选型指南|半导体硅片无损精密清洗解决方案

晶圆超声波清洗机选型指南|半导体硅片无损精密清洗解决方案

2026/8/20 14:19:20

一、晶圆清洗核心难点:为什么不能使用普通工业超声波清洗设备 硅晶圆、化合物半导体晶圆表面图形结构精密、薄膜脆弱,相比通用五金工件清洗,存在五大严苛挑战,普通超声设备极易造成批量报废: 易产生微观损伤 低频大功率…

C语言——深度理解指针(5)

C语言——深度理解指针(5)

2026/8/20 14:19:20

耕耘 :C、C、嵌入式技术领域 🔥我的个人主页 ❄️个人专栏:《C语言专栏》 《嵌入式专栏》 ✨**不要等待机会,而要创造机会!**✨ 📽博主简介: ✨✨一位热爱生活的阳光大男孩.✨✨ 前言 本文深入浅出地讲解了C语言中…

SpringAI的简单理解

SpringAI的简单理解

2026/8/20 14:09:20

SpringAI Spring AI 是 Spring 官方针对人工智能(AI)应用开发推出的标准化框架。 它的核心宗旨是将 Spring 开发者熟悉的“依赖注入、统一抽象、声明式配置、面向接口编程”等生态优势,完美复刻到 AI 和大模型开发领域。 Java 程序员&…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

2026/8/20 0:08:45

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com…

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

2026/8/20 0:08:45

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 判断你是否…

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

2026/8/20 0:08:45

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 按 3MF 官方规范的字面意思,一…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…