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 クライアントで clone、fetch、pull、push に使えます。
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 の http.extraHeader ↗ 設定で、git リクエストに HTTP ヘッダーを付けられます。
API が返すトークン文字列をそのまま使う場合は、Bearer トークンとして渡します。
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-cloneURL 形式では、パスワード欄にトークンのシークレットを使います。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-clonegit push "$ARTIFACTS_AUTH_REMOTE" HEAD:mainURL のユーザー名は空でなければ何でも構いません。Artifacts はそのユーザー名を受け付けますが、それ以外では使わず記録もしません。x はプレースホルダーです。
Artifacts は、clone と fetch で Git プロトコル v1 と v2 に対応しています。Git クライアントはプロトコルを自動で交渉します。
| 操作 | Git サービス | プロトコル対応 | 備考 |
|---|---|---|---|
| Clone と fetch | git-upload-pack |
v1 と v2 | プロトコル v2 は ls-refs と fetch に対応しています。プロトコル 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 |
一部 | filter や include-tag など、一部のオプションの v1 機能には対応していません。 |
| スコープ | コマンド | 備考 |
|---|---|---|
read |
git clone、git fetch、git pull |
読み取り専用アクセスに使います。 |
write |
git clone、git fetch、git pull、git push |
git push はリポジトリを変更するため、write トークンが必要です。 |