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

Протокол Git

Artifacts предоставляет доступ по Git к каждому репозиторию Artifacts.

У каждого репозитория есть стандартный удалённый репозиторий Git (smart HTTP) по адресу https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/<namespace>/<repo>.git.

Замените <ACCOUNT_ID> заполнитель на свой ID аккаунта Cloudflare. Используйте точное имя хоста из URL репозитория remote возвращённый binding Workers или REST API.

Используйте возвращенное имя репозитория remote обычным Git клиентом для clone, fetch, pull, а также push.

Аутентификация

Маршруты Git принимают токены доступа к репозиторию в двух формах:

Формат Подробности Пример
Bearer-токен в http.extraHeader Рекомендуется для локальных рабочих процессов. Используйте полную строку токена, возвращаемую плоскостью управления, и не включайте учётные данные в URL-адрес удалённого репозитория. git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
HTTP Basic auth в URL удалённого репозитория Используйте для недолговечных одноразовых команд, когда нужен самодостаточный удаленный репозиторий. Помещайте секрет токена в поле пароля. https://x:<token-secret>@<ACCOUNT_ID>.artifacts.cloudflare.net/git/<namespace>/<repo>.git

Token format

Токены репозитория выдаются в формате art_v1_<40 hex>?expires=<unix_seconds>. ?expires= суффикс представляет собой срок действия токена в виде unix timestamp в секундах. Чтобы узнать, когда истекает токен, извлеките значение после ?expires=.

Git extraHeader параметр

Git http.extraHeader ↗ параметр позволяет добавлять HTTP-заголовок к запросам git.

Если вы хотите использовать полную строку токена, возвращённую API, передайте её как Bearer-токен:

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

Удалённый репозиторий по HTTPS с Basic auth

Для варианта с URL используйте секрет токена в поле пароля. Artifacts игнорирует имя пользователя Basic auth.

Используйте эту форму только тогда, когда нужен самодостаточный удалённый 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 поддерживает протокол Git v1 и v2 для клонирования и получения данных. Git-клиенты согласовывают протокол автоматически.

Операция Служба Git Поддержка протокола Примечания
Clone и fetch git-upload-pack v1 и v2 Протокол v2 поддерживает ls-refs и fetch. Protocol v1 поддерживает обычные сценарии fetch, включая поверхностные и углубляющие fetch запросы.
Push git-receive-pack v1 Отправка использует стандартный процесс receive-pack протокола v1.
Отправка по протоколу v2 git-receive-pack Не поддерживается Artifacts не поддерживает v2 receive-pack.
Необязательные возможности протокола v1 git-upload-pack Частичная Некоторые необязательные возможности v1, например filter и include-tag, не поддерживаются.

Области действия токенов

Область действия Команды Примечания
read git clone, git fetch, git pull Используйте для доступа только на чтение.
write git clone, git fetch, git pull, git push git push изменяет репозиторий и требует токен с правом записи.