INTEGRITY Документация

REST API

Создайте репозиторий Artifacts с помощью REST API, а затем используйте обычный Git-клиент для push и pull содержимого.

К концу этого руководства вы создадите репозиторий внутри пространства имён, получите URL-адрес удалённого репозитория, отправите коммит и клонируете тот же репозиторий с помощью стандартного Git-клиента.

Начните с чтения Пространства имён, затем выберите имя пространства имён, которое будете использовать. В этом руководстве используется default в примерах.

Предварительные требования

Вам понадобится:

Если вы хотите создавать репозитории и управлять ими напрямую из 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_TOKEN

2. Создайте репозиторий

Выберите один из следующих способов создания репозитория в этом пространстве имён:

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:main

5. Загрузите репозиторий обычным 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

Следующие шаги

Справочник по REST API

Ознакомьтесь с каждой конечной точкой для репозиториев и токенов с примерами запросов и ответов.

Пример Git-клиента

Используйте обнаружение репозиториев и выдачу токенов со стандартным процессом работы Git клиента.

Рекомендации

Эффективно используйте изоляцию репозиториев, токены с минимальными привилегиями и разделение пространств имен.