使用 REST API 创建 Artifacts 存储库,然后使用常规 Git 客户端推送和拉取内容。
在本指南结束时,您将在命名空间中创建一个存储库,读取该存储库的远程 URL,推送一次提交,并使用标准 Git 客户端克隆同一个存储库。
首先阅读命名空间,然后选择您要使用的命名空间名称。本指南在示例中使用 default。
您需要:
- Artifacts 的访问权限。
- 命名空间名称,例如
default。 - 具有 Artifacts > Read 和 Artifacts > Edit 权限的 Cloudflare API 令牌。
- 本地
git客户端。 jq(如果您想自动提取响应字段)。
如果您想直接从 Worker 创建和管理存储库(而不是调用 REST API),请使用 Workers 快速入门指南。
使用您的 Cloudflare 账户 ID 和 Artifacts API 令牌设置以下变量:
export ARTIFACTS_NAMESPACE="default"
export ARTIFACTS_REPO="starter-repo"
export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"
export ARTIFACTS_BASE_URL="https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/artifacts/namespaces/$ARTIFACTS_NAMESPACE"每次运行本指南时,请使用唯一的存储库名称。
Artifacts 对 API 请求使用 Bearer 身份验证:
Authorization: Bearer $CLOUDFLARE_API_TOKEN选择以下方法之一在命名空间中创建存储库:
curl --request POST "$ARTIFACTS_BASE_URL/repos" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data "{\"name\":\"$ARTIFACTS_REPO\"}"响应类似于以下内容:
{
"result": {
"id": "repo_123",
"name": "starter-repo",
"description": null,
"default_branch": "main",
"remote": "https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/default/starter-repo.git",
"token": "art_v1_0123456789abcdef0123456789abcdef01234567?expires=1760000000"
},
"success": true,
"errors": [],
"messages": []
}响应包含您在 Git 操作中需要的两个值:
remote:此存储库的 Git 远程 URL。<ACCOUNT_ID>将是您实际的 Cloudflare 账户 ID。将此 URL 用于所有 Git 命令(git push、git clone)。请注意,此 URL 与您用来创建存储库的 REST API 的 URL 不同。token:用于 Git 操作的短期凭证。该令牌将其过期时间以 Unix 时间戳形式直接编码在?expires=后缀中。
将 result 中的 remote 和 token 值复制到本地 shell 变量中:
export ARTIFACTS_REMOTE="<PASTE_RESULT_REMOTE_FROM_RESPONSE>"
export ARTIFACTS_TOKEN="<PASTE_RESULT_TOKEN_FROM_RESPONSE>"捕获一次创建响应,并使用 jq 提取字段:
CREATE_RESPONSE=$(curl --silent --request POST "$ARTIFACTS_BASE_URL/repos" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data "{\"name\":\"$ARTIFACTS_REPO\"}")
export ARTIFACTS_REMOTE=$(printf '%s' "$CREATE_RESPONSE" | jq -r '.result.remote')
export ARTIFACTS_TOKEN=$(printf '%s' "$CREATE_RESPONSE" | jq -r '.result.token')当您以后需要恢复远程 URL 时,获取存储库元数据:
curl "$ARTIFACTS_BASE_URL/repos/$ARTIFACTS_REPO" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"result": {
"id": "repo_123",
"name": "starter-repo",
"description": null,
"default_branch": "main",
"created_at": "<ISO_TIMESTAMP>",
"updated_at": "<ISO_TIMESTAMP>",
"last_push_at": null,
"source": null,
"read_only": false,
"remote": "https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/default/starter-repo.git"
},
"success": true,
"errors": [],
"messages": []
}此端点仅返回存储库元数据。如果您需要新的存储库令牌,请使用 POST /tokens 生成一个。
创建一个本地存储库并将其推送到 Artifacts 远程端:
mkdir artifacts-demo
cd artifacts-demo
git init -b main
printf '# Artifacts demo\n' > README.md
git add README.md
git commit -m "Initial commit"
git remote add origin "$ARTIFACTS_REMOTE"
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" push -u origin main这将使用推荐的基于标头(header)的形式,并使令牌保持在远程 URL 之外。
如果您在运行短期命令时需要包含身份验证信息的完整远程 URL,请改用令牌密钥(token secret)构建一个:
export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"
git push "$ARTIFACTS_AUTH_REMOTE" HEAD:main将同一个存储库克隆到第二个目录中:
cd ..
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
git -C artifacts-clone log --oneline -1您应该会看到您在上一步中推送的提交。
您也可以在运行短期命令时使用包含身份验证信息的完整远程 URL 进行克隆:
git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-cloneREST API 参考
查看每个存储库和令牌端点以及请求和响应示例。
Git 客户端示例
在使用标准 Git 客户端流时使用存储库发现和令牌生成。
最佳实践
有效地使用存储库隔离、最小权限令牌和命名空间隔离。