跳转到内容
搜索文档

ArtifactFS

最后更新 查看 MarkdownAgent 设置

ArtifactFS 将 Git 仓库挂载为本地文件系统,而无需等待完整克隆。当您的环境需要快速获取工作树并且可以容忍按需加载(hydrate)文件内容时,它非常适用。

在沙盒、容器和虚拟机中对大型仓库使用 ArtifactFS。对于较小的仓库,通常使用常规的 git clone 更简单。

ArtifactFS 适用于 Artifacts Git 远程仓库和其他 Git 仓库。

选择 ArtifactFS 的场景

  • 启动时间比完整的本地克隆更重要
  • 仓库足够大,以至于克隆会减慢沙盒启动速度
  • 工具需要挂载的工作树,而不是直接进行 Git 访问

对于较小的仓库,请从常规的 git clone 开始。它通常足够快,且操作更简单。

了解其行为方式

ArtifactFS 从无 blob 克隆(blobless clone)开始。它首先获取提交(commit)、树(tree)和引用(ref),然后通过 FUSE 挂载工作树。

当工具读取文件内容时,文件内容会异步加载。仅当请求的 blob 尚未加载时,读取才会被阻塞,随后的读取将来自本地 blob 缓存。

ArtifactFS 会优先处理通常可以解除开发人员工具阻塞的文件,例如包清单(package manifest)、依赖文件和常见源文件。大型二进制资产的优先级会被降低。

挂载 Artifacts 仓库

此示例安装 ArtifactFS,从仓库令牌构建已认证的 Artifacts 远程仓库,挂载该仓库,并从挂载的工作树中读取文件。

此示例假设您在主机上已经有可用的 FUSE 实现、具有仓库范围的 Artifacts 令牌,以及来自创建或获取响应的仓库 remote 值。

go install github.com/cloudflare/artifact-fs/cmd/artifact-fs@latest

export ARTIFACTS_REMOTE="<PASTE_REMOTE_FROM_CREATE_OR_GET_RESPONSE>"
export ARTIFACTS_TOKEN="<YOUR_READ_TOKEN>"
export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"

artifact-fs add-repo \
  --name starter-repo \
  --remote "$ARTIFACTS_AUTH_REMOTE" \
  --branch main \
  --mount-root /tmp

artifact-fs daemon --root /tmp &

ls /tmp/starter-repo/
cat /tmp/starter-repo/README.md
git -C /tmp/starter-repo log --oneline -5

在已认证的远程 URL 中使用短期令牌。如果您需要较小的仓库或更简单的本地工作流,请改用普通的 Git 协议克隆。

这篇文档对您有帮助吗?