標準の Git クライアントで Artifacts のリポジトリを操作できます。この例では clone の手順を説明しますが、fetch、pull、push、その他の Git 操作でも同じ方法が使えます。
この操作には、次のものが必要です。
- REST API からリポジトリのリモート URL を取得する
- そのリポジトリにスコープを絞った短期間のトークンを発行する
リモート URL とトークンがあれば、そのリポジトリに対して Git コマンドを実行できます。
この例では、リポジトリがすでに存在し、Artifacts > Edit 権限を持つ Cloudflare API トークン があることを前提とします。
プレースホルダーを、アカウント ID、API トークン、リポジトリ名に置き換えます。このスクリプトは API からリポジトリのリモート URL を取得し、1 時間で期限切れになる読み取り専用トークンを発行し、リポジトリをローカルディレクトリにクローンします。
次の例では、JSON レスポンスからフィールドを取り出すために jq を使います。
# Set your account details
export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export ARTIFACTS_NAMESPACE="default"
export ARTIFACTS_REPO="starter-repo"
export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"
export ARTIFACTS_BASE_URL="https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/artifacts/namespaces/$ARTIFACTS_NAMESPACE"
# Fetch the repo's remote URL
REPO_JSON=$(curl --silent "$ARTIFACTS_BASE_URL/repos/$ARTIFACTS_REPO" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN")
ARTIFACTS_REMOTE=$(printf '%s' "$REPO_JSON" | jq -r '.result.remote')
# Mint a short-lived read token
TOKEN_JSON=$(curl --silent "$ARTIFACTS_BASE_URL/tokens" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data "{\"repo\":\"$ARTIFACTS_REPO\",\"scope\":\"read\",\"ttl\":3600}")
ARTIFACTS_TOKEN=$(printf '%s' "$TOKEN_JSON" | jq -r '.result.plaintext')
# Clone the repo
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-cloneこれで ./artifacts-clone に標準の Git チェックアウトがあります。
この流れは、リポジトリの発見やアクセス制御を別のシステムが担い、ローカルツールは通常の Git リモートを期待する場合に便利です。
ARTIFACTS_TOKEN はシークレットとして扱ってください。ログに残さず、リモート URL に認証情報を保存するより http.extraHeader を使ってください。
短期間のワークフロー用に自己完結したリモート URL が必要な場合は、トークンのシークレットを取り出し、そのコマンドだけに認証済みリモートを組み立てます。
ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"
git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone