面向CI团队的S3测试固件——用NetDrive将Amazon S3挂载为驱动器
将Amazon S3挂载为本地驱动器盘符,让CI测试固件像普通文件路径一样工作。适用于Windows和macOS的DevOps团队NetDrive使用案例。
某后端团队在Amazon S3上存储了40 GB的二进制测试固件——数据库快照、预渲染的媒体文件和大型参考数据集。他们的集成测试套件将这些文件当作普通文件路径读取。每次固件发生变化,旧的工作流程都是一样的:aws s3 cp 会向每个CI运行器下载数GB数据,任何触发流水线的人都要等25分钟测试才会开始。用NetDrive将S3存储桶挂载为本地驱动器,可以完全消除这一复制步骤——测试直接通过 T:\fixtures\ 这样的路径从S3读取,无需任何本地下载步骤。

将S3挂载为驱动器盘符——无需下载,无需改代码
NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。
- 任何读取文件路径的应用都能自动工作
- 开机自动挂载,确保驱动器在任何登录之前就已就绪
- Wasabi和MinIO的工作方式与Amazon S3相同
免费试用。提供终身与订阅方案。
为什么文件路径兼容性对CI如此重要
大多数测试套件在编写时都假定从本地路径读取固件。把每一处固件引用都改成S3 URL,意味着要改动几十个文件,还可能破坏本地开发体验。更干净的做法是让S3看起来像本地驱动器,这样现有路径无需修改就能继续工作。
NetDrive可以将S3存储桶挂载为网络驱动器、只读驱动器或本地磁盘卷,具体取决于CI运行器的需求。在Windows上,它会成为一个盘符(如 T:、S: 等),机器上的任何进程都可以读取。在macOS上,它会以FUSE卷的形式出现在 /Volumes/ 或自定义路径下。测试套件看到的是一个文件系统;NetDrive在后台处理S3 API调用。
大文件固件之所以能可靠工作,是因为NetDrive以分块方式流式传输数据,并在网络出现波动时自动重试。5 GB以上的文件会使用S3分段传输(自NetDrive 3.5.434起支持),因此固件大小实际上没有上限。

将S3存储桶设置为驱动器
- 打开NetDrive,在驱动器管理器中点击**+ 添加驱动器**。
- 从提供商列表中选择Amazon S3。
- 输入你的AWS Access Key ID和Secret Access Key。建议使用具有最小权限的专用IAM角色——固件存储桶只赋予只读权限,仅在测试需要生成产物的地方才授予写权限。
- 输入存储桶名称。自NetDrive 3.19.7起,区域会根据存储桶配置自动检测,因此除非需要手动覆盖,否则可以留空区域字段。
- 在驱动器类型中,标准读写挂载选择网络驱动器;如果CI运行器不应写回固件存储桶,则选择只读驱动器。
- 将挂载时机设为开机时——这是与开发者工作站配置的关键区别。开机挂载可以让驱动器在任何用户登录之前就已可用,这正是无头CI服务器所需要的。
- 点击挂载。
现在,无论是Windows上的盘符还是macOS上的卷路径,机器上的任何进程(包括CI代理)都可以访问它,即便没有活跃的用户会话。

无需登录的自动挂载——无头CI服务器配置
开机挂载选项正是让NetDrive在CI基础设施上真正实用的关键。大多数CI运行器(Jenkins代理、GitHub Actions自托管运行器、GitLab代理)以系统服务的形式启动,而不是用户会话。只在用户登录时才挂载的驱动器,对这些代理来说是不可见的。
启用开机挂载后,S3驱动器会在操作系统启动完成后立即就绪。CI代理会自动识别到它——无需登录,无需运行挂载命令的脚本,也不存在代理启动与驱动器出现之间的竞争条件。

在某些情况下,挂载需要以编程方式完成——例如根据分支名称或流水线变量动态选择要挂载的存储桶——NetDrive提供了 nd3cmd,这是一款在NetDrive 3.8.921中新增的命令行工具,可用于脚本化的驱动器管理。具体的 nd3cmd 命令参考请查阅NetDrive支持论坛,因为具体标志会因版本而异。
当测试产生构建产物(覆盖率报告、渲染输出、基准测试结果)时,同一个挂载驱动器同样适用于写入操作。NetDrive的后台上传模式会先写入本地缓存,再异步上传到S3,因此测试进程不会因等待上传完成而被阻塞。

本地部署S3:MinIO与Wasabi
并非每个团队都直接使用AWS。有些团队在本地运行MinIO,以将固件数据留在公有云之外;也有些团队使用Wasabi来实现成本优化的冷存储。NetDrive自3.4.398起支持S3兼容存储提供商,并在3.15.450中新增了对MinIO的显式支持。
连接S3兼容端点的步骤如下:
- 点击**+ 添加驱动器**,选择S3兼容(而非Amazon S3)。
- 输入你的MinIO集群或Wasabi区域端点的自定义端点URL。
- 像之前一样输入存储桶名称和凭据。
- 以相同方式设置驱动器类型和挂载触发条件。
其余设置完全相同。从测试套件的角度来看,T:\fixtures\ 就是 T:\fixtures\,无论后端存储是AWS us-east-1、Wasabi存储桶,还是与CI运行器位于同一数据中心的MinIO集群。
总结
将S3挂载为驱动器盘符,是让CI流水线以零代码改动的方式访问存储在对象存储中的大型固件库的方法。测试套件继续读取本地路径;NetDrive负责S3的转换工作。开机挂载意味着驱动器在CI代理需要时始终就绪,无需任何手动干预。
关于在开发者Mac上设置S3访问,请参阅用NetDrive在macOS上挂载Amazon S3。如果你的团队还需要为旧固件提供经济高效的冷存储层,用NetDrive在Windows上挂载Backblaze B2介绍了使用Backblaze兼容S3 API的类似配置。
— Alex, NetDrive