Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Git クライアント

最終更新 Markdown で表示Agent セットアップ

標準の 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

役に立ちましたか?