概览
ProAnima Arkvory 是一个可自行托管的构建制品和文件仓库。您把它安装在自己的服务器上。它保存构建产生的文件,并把这些文件交付给需要它们的人和系统:部署代理、CI/CD 流水线、测试机器和开发人员。
Arkvory 对所有人免费,包括企业。它的源代码可供阅读,但它不是开源软件。您可以在自己的组织内部使用和修改它,但不得分发副本、出售它,或将它作为服务提供给他人。详见许可证。
适用对象
- CI/CD 工程师:需要一个统一的位置来发布构建、按版本或阶段查找构建,并在部署作业中下载。
- 管理员:希望存储服务只运行在一台服务器上,能够自动重启、自行备份并自行更新。
- 游戏工作室:使用 Unity 或 Unreal Engine。Arkvory 通过 Git LFS 存储大型二进制资源,通过 npm 注册表(registry)存储 Unity 包,并保存数十 GB 的构建产物。
- 多站点团队:希望在下载者附近放置仓库的只读副本。
存储什么
所有内容都保存在仓库中。一个仓库可以同时存放多种内容:
| 内容 | 使用方式 |
|---|---|
| 制品(任意文件) | 通过控制台、命令行客户端、SDK 或 HTTP API 上传 |
| UPack 包 | 带有包组、名称和 SemVer 版本号的版本化包。参见包。 |
| 路径文件 | 形如 builds/game/1.4/Setup.exe 的路径,会保留它的每个历史版本。参见文件与路径和原始文件。 |
| 容器镜像 | 面向 Docker、Podman、Helm 和 ORAS 的 OCI 注册表。参见容器镜像。 |
| Git LFS 对象 | 支持文件锁的 Git LFS 服务器。参见 Git LFS。 |
| npm 包和 Unity 包 | Unity Package Manager 可以使用的 npm 注册表。参见 Unity 与 npm。 |
每个存储的文件都是一个不可变的制品,带有 SHA-256 校验和。新内容绝不会覆盖旧的字节,而是创建新的制品。参见概念。
主要功能
- 大文件:上传按分片发送,网络故障或重启后可以继续。单个对象最大约 10 TiB。下载支持 HTTP 范围请求,因此同样可以继续。
- 访问控制:用户账户、组、个人访问令牌,以及带密钥的服务账户。每个密钥只获得它所需的仓库操作权限。
- 阶段与晋级:把构建标记为
qa、release或prod,或在不重新上传的情况下把它发布到另一个仓库。部署代理可以请求“版本范围^1.4内最新的release构建”。 - 元数据:标签、文本元数据、集合,以及清单、SBOM 和签名等附件。
- 保留规则:为每个包保留最近 N 个构建,设置配额,并在后台清除旧内容。
- 备份:备份代理按每日计划(由管理员开启)把数据库和全部内容复制到另一块磁盘或 NAS 上的备份存储中,并验证这些副本。
- 镜像:第二个安装实例可以保存仓库的只读副本,并在主服务器不可用时提供服务。
- 读取网关:同一共享存储上的额外下载进程共用同一份下载速率预算。
- 自愈:服务在崩溃或卡死后自动重启。长时间的传输可以在重启后继续。
- 更新:服务器检查带签名的稳定版,这些版本由 ProAnimaStudio 在其中心(hub)批准。可以手动安装,也可以在维护时段自动安装,并且支持回滚到上一个版本。
- Web 控制台:提供浅色和深色主题,以 11 种语言显示:英语、俄语、西班牙语、法语、德语、葡萄牙语、中文、日语、韩语、印地语和阿拉伯语(从右向左显示)。本文档使用相同的语言。参见 Web 控制台。
运行方式
Arkvory 运行在一台服务器上。它使用 PostgreSQL 保存目录,使用本地目录保存内容。三个服务协同工作:
| 服务 | 用途 |
|---|---|
| API | HTTP 服务器:提供 API、控制台和注册表,还负责执行保留规则和物理清理。 |
| 工作进程(worker) | 后台任务:完成大文件上传、同步镜像 |
| 备份代理 | 按计划把备份写入备份存储 |
有三种安装方式:
| 平台 | 安装程序 | 说明 |
|---|---|---|
| Windows 10/11、Windows Server | Arkvory-Setup-x64.exe | 安装向导。内置 Node.js 和 PostgreSQL,无需联网即可安装。服务无需用户登录即可运行。参见 Windows。 |
| Linux | Arkvory-amd64.deb、Arkvory-x86_64.rpm | 适用于 apt 和 dnf 的软件包,带 systemd 服务。参见 Linux。 |
| Docker | Docker Compose | API、worker、备份代理和 PostgreSQL 都运行在容器中。参见 Docker。 |
默认情况下,服务器只监听 127.0.0.1:8080。在其他机器连接之前,请先设置 HTTPS。
一个安装实例就是一台服务器:它停止时,客户端会等待到它恢复为止。在 Linux 上,由两到三台服务器组成的高可用集群会在其中一台故障时接管。请使用备份;如有需要,可在第二个站点使用镜像。