Перейти к содержимому

Репозитории ​

Репозиторий — это именованное место в Arkvory, где хранятся файлы и где определяется доступ. Всё, что вы публикуете, попадает в один репозиторий, и каждый запрос называет его.

Что такое репозиторий ​

У репозитория есть ID: строчные латинские буквы, цифры, - и _; он начинается с буквы или цифры и не длиннее 64 символов. Примеры: releases, builds и game-prod. ID входит в каждый адрес:

ЧтоАдрес
Артефакты, пакеты, файлы по пути (HTTP API)/api/v1/repositories/<репозиторий>/…
Образы контейнеров/v2/<репозиторий>/<образ>/…
Git LFS/lfs/<репозиторий>
Пакеты npm и Unity/npm/<репозиторий>/…

См. Образы контейнеров, Git LFS и Пакеты Unity и npm.

В репозитории хранятся неизменяемые артефакты. Их можно увидеть в двух видах: пакеты UPack с версией (Пакеты) и файлы по пути с историей (Файлы по пути). Стадии и продвижение переносят сборки между репозиториями (Стадии и продвижение).

Сейчас у репозитория нет ни отображаемого имени, ни описания, ни собственных настроек, кроме доступа, настроек хранения и — для копии другого сервера — состояния зеркала. Переименовать репозиторий нельзя. Удалить его тоже нельзя: отнимите доступ, и файлы останутся на диске.

Создание репозитория ​

Команды для создания репозитория нет. Репозиторий появляется, как только на него выдан доступ. До первой загрузки он пуст.

Администратор делает одно из двух:

  • Выдаёт группе доступ к новому имени. В консоли откройте Пользователи и доступ, разверните Доступ к репозиториям, выберите группу, введите имя в поле Репозиторий, выберите Чтение или Чтение и запись и нажмите Сохранить доступ. Для первого доступа удобна группа arkvory-owners, в которую входит владелец. См. Группы и доступ к репозиториям.
  • Указывает репозиторий в политике сервисной учётной записи. См. Сервисные учётные записи и ключи для CI.

В API то же делают setGroupGrant и setServicePolicy. Опечатка создаёт новое, неверное имя: проверяйте написание. Репозиторий releases существует после установки, с доступом на запись для группы arkvory-owners.

Просмотр доступных репозиториев ​

Вы видите только те репозитории, на которые у ваших учётных данных есть право. Репозиторий, на который у вас нет права, в списке не появляется, а прямой запрос к нему возвращает 404. Пустой репозиторий, к которому у вас есть доступ, тоже отображается.

В консоли откройте Репозитории. Каждая карточка показывает имя репозитория и, под заголовком Ваши права, действия, которые у вас там есть. Кнопки:

  • Кнопка Открыть файлы открывает каталог репозитория. Она появляется, если вы можете просматривать список артефактов.
  • Кнопка Хранение и очистка открывает каталог с настройками хранения. Она появляется, если вы можете читать политику хранения или диагностику.
  • Кнопка Управление доступом ведёт к управлению пользователями и сервисами. Она появляется для администраторов и администраторов сервисов.

Список показывает по 50 репозиториев за раз; кнопка Следующая страница загружает следующую страницу, а Обновить обновляет список. Зеркало отмечено значком Зеркало.

С arkvoryctl:

bash
arkvoryctl repositories
arkvoryctl doctor

repositories выводит каждый репозиторий с его formats и вашими permissions. Если в ответе есть значение next, передайте его в --after. doctor показывает сервер, возможности и права текущего ключа.

В API listRepositories принимает limit (от 1 до 100, по умолчанию 50) и after — последний ID предыдущей страницы. getRepository возвращает одну карточку.

bash
curl -H "Authorization: Bearer $ARKVORY_KEY" "$ARKVORY/api/v1/repositories?limit=100"
typescript
const page = await client.repositories({ limit: 50 });
const card = await client.repository('releases');

Карточка состоит из id, formats (всегда upack и assets) и permissions. О размере и числе файлов она ничего не сообщает. Названия действий см. в разделе Права.

Выбор репозитория в консоли ​

На карточке Подключение к репозиторию есть поле Репозиторий со списком репозиториев, которые вы можете читать. Сначала в поле стоит releases. После входа консоль оставляет его, если вы можете его читать, а иначе выбирает первый репозиторий, доступный вам для чтения. Чтобы работать в другом, введите его имя или выберите из списка. Каталог, пакеты, загрузки и сведения об артефакте затем используют этот репозиторий. Кнопка Открыть файлы на карточке заполняет поле за вас.

Адрес артефакта в консоли содержит его репозиторий: #/artifact/<репозиторий>/<id>. Ссылка на артефакт из репозитория, который вы не можете читать, показывает сообщение и каталог.

arkvoryctl использует репозиторий профиля — releases, если при добавлении профиля вы не указали другой. Для одной команды его можно заменить параметром --repository:

bash
arkvoryctl profile add production --server https://arkvory.example --token-file ~/.arkvory/key --repository builds
arkvoryctl list --repository releases

В SDK client.inRepository('builds') возвращает клиент, привязанный к одному репозиторию. В HTTP репозиторий указан в пути.

Настройки репозитория ​

Что можно задать для репозитория сейчас:

  • Доступ. Кто может читать и записывать. См. Учётные записи и доступ.
  • Хранение. Квота в ГиБ, предупреждающий и критический пороги, правила хранения (хранить последние N сборок каждого пакета и канала, защищённые метки, минимальный возраст), автоматическая очистка и физическая очистка. Для просмотра настроек нужно действие storage.read, для изменения — storage.manage; уровень группы человека их не даёт, а ключ сервиса даёт. В консоли они находятся в разделе Хранение и автоочистка, который открывается кнопкой Хранение и очистка. В arkvoryctl их читают storage usage и storage policy. Новая загрузка, которая превысила бы квоту, отклоняется с ошибкой 507 storage_quota. См. Хранение.
  • Зеркало. Администратор сервера может сделать репозиторий копией репозитория другого сервера. См. следующий раздел.

Репозитории только для чтения ​

Зеркало — это копия репозитория другого сервера Arkvory только для чтения. Сервер синхронизирует её сам. Все, у кого есть право чтения, могут просматривать список и скачивать. Менять её нельзя никому: загрузка, публикация, изменение меток, добавление стадий, назначение путей и удаление отклоняются с ошибкой 409 mirror_read_only, какими бы ни были уровень группы человека или действия ключа. Чтобы изменить содержимое, используйте основной сервер.

Консоль показывает зеркало со значком над каталогом и скрывает кнопку загрузки:

ЗначокЗначение
ЗеркалоКопия актуальна
Зеркало · синхронизацияСервер ещё догоняет источник
Зеркало · ошибка синхронизацииПоследняя синхронизация не удалась; скачивание продолжает работать

Нажмите Об этом зеркале рядом со значком, чтобы увидеть источник, время последней синхронизации и код ошибки.

Второй вид — импорт. Это обычный репозиторий, который автоматически забирает версии с определёнными стадиями из репозитория другого сервера (например, из dev в prod). Его значок — Импорт. Загружать в него можно по-прежнему, а последующие изменения или удаления в источнике не влияют на то, что уже скопировано.

В API getRepositoryMirror возвращает состояние: mode (mirror или import), phase (pending, seeding или following), caughtUp, syncedAt и errorCode. Для обычного репозитория он отвечает 404.

Зеркала настраивает администратор сервера. См. Зеркала. Шлюз чтения — это другое: адрес, который только отдаёт скачивания тех же репозиториев. Изменения через него отклоняются с ошибкой 405 read_only. См. Шлюзы чтения.

Arkvory · ProAnimaStudio