Skip to content

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

Git プロトコル

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

Artifacts は、すべての Artifacts リポジトリに Git アクセスを公開します。

各リポジトリには、標準の Git smart HTTP リモートがあります。場所は https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/<namespace>/<repo>.git です。

<ACCOUNT_ID> プレースホルダーは、Cloudflare のアカウント ID に置き換えます。ホスト名は、Workers バインディングまたは REST API が返すリポジトリの remote と正確に一致させてください。

返されたリポジトリの remote は、通常の Git クライアントで clonefetchpullpush に使えます。

認証

Git ルートは、次の 2 形式でリポジトリアクセストークンを受け付けます。

形式 詳細
http.extraHeader の Bearer トークン ローカル作業ではこちらを推奨します。コントロールプレーンが返すトークン文字列をそのまま使い、認証情報をリモート URL に含めないでください。 git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
リモート URL の HTTP Basic 認証 自己完結したリモートが必要な、短時間のワンオフコマンド向けです。パスワード欄にトークンのシークレットを入れます。 https://x:<token-secret>@<ACCOUNT_ID>.artifacts.cloudflare.net/git/<namespace>/<repo>.git

トークンの形式

リポジトリトークンは art_v1_<40 hex>?expires=<unix_seconds> 形式で発行されます。?expires= サフィックスは、トークンの有効期限を Unix 秒のタイムスタンプで表します。期限を確認するには、?expires= のあとの値を解析します。

Git の extraHeader パラメーター

Git の http.extraHeader 設定で、git リクエストに HTTP ヘッダーを付けられます。

API が返すトークン文字列をそのまま使う場合は、Bearer トークンとして渡します。

git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone

Basic 認証付きの HTTPS リモート

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-clone
git push "$ARTIFACTS_AUTH_REMOTE" HEAD:main

URL のユーザー名は空でなければ何でも構いません。Artifacts はそのユーザー名を受け付けますが、それ以外では使わず記録もしません。x はプレースホルダーです。

プロトコル対応

Artifacts は、clone と fetch で Git プロトコル v1 と v2 に対応しています。Git クライアントはプロトコルを自動で交渉します。

操作 Git サービス プロトコル対応 備考
Clone と fetch git-upload-pack v1 と v2 プロトコル v2 は ls-refsfetch に対応しています。プロトコル v1 は通常の fetch(shallow と deepen を含む)に対応しています。
Push git-receive-pack v1 Push は標準の v1 receive-pack フローを使います。
プロトコル v2 での Push git-receive-pack 非対応 Artifacts は v2 の receive-pack に対応していません。
プロトコル v1 のオプション機能 git-upload-pack 一部 filterinclude-tag など、一部のオプションの v1 機能には対応していません。

トークンスコープ

スコープ コマンド 備考
read git clonegit fetchgit pull 読み取り専用アクセスに使います。
write git clonegit fetchgit pullgit push git push はリポジトリを変更するため、write トークンが必要です。

役に立ちましたか?