Artifacts 为每个 Artifacts 存储库提供 Git 访问权限。
每个存储库都具有一个标准的 Git 智能 HTTP 远程端,地址为 https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/<namespace>/<repo>.git。
将 <ACCOUNT_ID> 占位符替换为您的 Cloudflare 账户 ID。请使用 Workers 绑定(binding)或 REST API 返回的存储库 remote 中的确切主机名。
将返回的存储库 remote 与常规 Git 客户端一起用于 clone、fetch、pull 和 push。
Git 路由接受以下两种形式的存储库访问令牌:
| 格式 | 详情 | 示例 |
|---|---|---|
http.extraHeader 中的 Bearer 令牌 |
推荐用于本地工作流。使用控制平面返回的完整令牌字符串,并使凭证保持在远程 URL 之外。 | git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone |
| 远程 URL 中的 HTTP Basic 身份验证 | 在需要包含身份验证信息的完整远程端运行短期、一次性命令时使用。将令牌密钥(token secret)填入密码栏。 | https://x:<token-secret>@<ACCOUNT_ID>.artifacts.cloudflare.net/git/<namespace>/<repo>.git |
存储库令牌的格式为 art_v1_<40 hex>?expires=<unix_seconds>。?expires= 后缀是 Unix 时间戳形式的令牌过期秒数。要检查令牌何时过期,请解析 ?expires= 之后的值。
Git 的 http.extraHeader ↗ 设置允许您向 git 请求附加 HTTP 标头。
如果您想使用 API 返回的完整令牌字符串,请将其作为 Bearer 令牌传递:
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone对于 URL 形式,在密码栏中使用令牌密钥。Artifacts 会忽略 Basic 身份验证用户名。
仅在运行短期命令时需要包含身份验证信息的完整远程 URL 时才使用此形式。
export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clonegit push "$ARTIFACTS_AUTH_REMOTE" HEAD:main在 URL 中使用任何非空用户名。Artifacts 接受该用户名,但不会在其他地方使用或记录它,因此 x 只是一个占位符。
Artifacts 在克隆(clone)和拉取(fetch)中支持 Git 协议 v1 和 v2。Git 客户端会自动协商协议。
| 操作 | Git 服务 | 协议支持 | 说明 |
|---|---|---|---|
| 克隆和拉取(Clone and fetch) | git-upload-pack |
v1 和 v2 | 协议 v2 支持 ls-refs 和 fetch。协议 v1 支持正常的拉取流,包括浅克隆(shallow)和深度克隆(deepen)拉取。 |
| 推送(Push) | git-receive-pack |
v1 | 推送使用标准的 v1 receive-pack 流。 |
| 基于协议 v2 的推送 | git-receive-pack |
不支持 | Artifacts 不支持 v2 receive-pack。 |
| 可选的协议 v1 功能 | git-upload-pack |
部分支持 | 部分可选的 v1 功能(例如 filter 和 include-tag)不受支持。 |
| 范围 | 命令 | 说明 |
|---|---|---|
read |
git clone, git fetch, git pull |
用于只读访问。 |
write |
git clone, git fetch, git pull, git push |
git push 会修改存储库,需要写入令牌。 |