REST API で Artifacts リポジトリを作成し、通常の Git クライアントでコンテンツを push / pull します。
このガイドの最後には、名前空間内にリポジトリを作成し、リモート URL を取得し、コミットを push し、標準の Git クライアントで同じリポジトリを clone できます。
まず 名前空間 を読み、使う名前空間名を決めます。このガイドの例では 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 操作に必要な 2 つの値が含まれます。
remote: このリポジトリの Git リモート URL です。<ACCOUNT_ID>は実際の Cloudflare アカウント ID になります。すべての Git コマンド(git push、git clone)にこの URL を使います。リポジトリ作成に使った REST API とは別の URL です。token: Git 操作用の短命な資格情報です。トークンは?expires=サフィックスに Unix タイムスタンプとして有効期限を直接エンコードします。
result の remote と token を、ローカルのシェル変数にコピーします。
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 のリモートに push します。
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これは推奨のヘッダー形式で、トークンをリモート URL に含めません。
短命なコマンド用に自己完結したリモート URL が必要な場合は、トークンシークレットから組み立てます。
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同じリポジトリを、別のディレクトリに clone します。
cd ..
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
git -C artifacts-clone log --oneline -1前の手順で push したコミットが表示されます。
短命なコマンド用に、自己完結したリモート URL で clone することもできます。
git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone