← Artifacts / artifacts / api
Протокол 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-clonegit 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 изменяет репозиторий и требует токен с правом записи. |