← Artifacts / artifacts / get-started
REST API
Создайте репозиторий Artifacts с помощью REST API, а затем используйте обычный Git-клиент для push и pull содержимого.
К концу этого руководства вы создадите репозиторий внутри пространства имён, получите URL-адрес удалённого репозитория, отправите коммит и клонируете тот же репозиторий с помощью стандартного Git-клиента.
Начните с чтения Пространства имён, затем выберите имя пространства имён, которое будете использовать. В этом руководстве используется default в примерах.
Предварительные требования
Вам понадобится:
- Доступ к Artifacts.
- Имя пространства имён, например
default. - A API-токен Cloudflare с Артефакты > Чтение и Артефакты > Изменить.
- Локальный
gitклиент. jq, если нужно автоматически извлекать поля ответа.
Если вы хотите создавать репозитории и управлять ими напрямую из Worker (вместо вызовов REST API), используйте Руководство по началу работы с Workers.
1. Экспортируйте переменные окружения
Задайте следующие переменные, используя идентификатор вашей учётной записи Cloudflare и API-токен Artifacts:
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 использует аутентификацию Bearer для запросов к API:
Authorization: Bearer $CLOUDFLARE_API_TOKEN2. Создайте репозиторий
Выберите один из следующих способов создания репозитория в этом пространстве имён:
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:
remote: URL удалённого Git репозитория для этого репозитория.<ACCOUNT_ID>будет вашим реальным ID аккаунта Cloudflare. Используйте этот URL для всех Git команд (git push, git clone). Обратите внимание, что этот URL отличается от URL REST API, который вы использовали для создания репозитория.token: краткоживущие учётные данные для Git операций. Срок действия токена закодирован непосредственно в?expires=суффикс в виде Unix timestamp.
Скопируйте remote и token значения из result в локальные переменные shell:
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')3. Снова получите URL репозитория
Получите метаданные репозитория, если вам потребуется позже восстановить 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": []
}Этот endpoint возвращает только метаданные репозитория. Если нужен новый токен репозитория, создайте его с помощью POST /tokens.
4. Отправьте первый коммит с помощью git
Создайте локальный репозиторий и отправьте его в удалённый репозиторий Artifacts:
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:main5. Загрузите репозиторий обычным git клиентом
Клонируйте тот же репозиторий во второй каталог:
cd ..
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
git -C artifacts-clone log --oneline -1Вы должны увидеть коммит, который вы отправили на предыдущем шаге.
Также можно клонировать с помощью самодостаточного удалённого URL для кратковременной команды:
git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone