← Artifacts / artifacts / guides
ArtifactFS
ArtifactFS монтирует Git-репозиторий как локальную файловую систему, не дожидаясь полного клонирования. Это хорошо работает, когда вашей среде нужно быстро получить рабочее дерево и она может допустить подгрузку содержимого файлов по требованию.
Используйте ArtifactFS для больших репозиториев в sandbox, контейнерах и виртуальных машинах. Для небольших репозиториев подойдет обычный git clone обычно проще.
ArtifactFS работает с Удалённые репозитории Git в Artifacts и другие репозитории Git.
Выбирайте ArtifactFS, если
- время запуска важнее, чем полное локальное клонирование
- репозиторий достаточно велик, и его клонирование замедляет запуск песочницы
- инструментам нужно смонтированное рабочее дерево, а не прямой доступ к Git
Для небольших репозиториев начните с обычного git clone. Обычно этого достаточно по скорости, и этот способ проще в эксплуатации.
Понять, как это работает
ArtifactFS начинает работу с клона без blob-объектов. Сначала он получает коммиты, деревья и ссылки, а затем монтирует рабочее дерево через FUSE.
Содержимое файлов подгружается асинхронно по мере того, как инструменты его читают. Чтение блокируется только тогда, когда запрошенный blob ещё не подгружен, а последующие обращения выполняются уже из локального кеша blob.
ArtifactFS отдаёт приоритет файлам, которые обычно в первую очередь нужны инструментам разработки, таким как манифесты пакетов, файлы зависимостей и распространённые файлы исходного кода. Крупные бинарные файлы получают более низкий приоритет.
Монтируйте репозиторий Artifacts
В этом примере устанавливается ArtifactFS, из токена репозитория формируется аутентифицированный удаленный репозиторий Artifacts, репозиторий монтируется, и файлы считываются из смонтированного рабочего дерева.
В этом примере предполагается, что на хосте уже есть рабочая реализация FUSE, токен Artifacts с областью действия на репозиторий и репозиторий remote значение из ответа на create или get.
go install github.com/cloudflare/artifact-fs/cmd/artifact-fs@latest
export ARTIFACTS_REMOTE="<PASTE_REMOTE_FROM_CREATE_OR_GET_RESPONSE>"
export ARTIFACTS_TOKEN="<YOUR_READ_TOKEN>"
export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"
artifact-fs add-repo \
--name starter-repo \
--remote "$ARTIFACTS_AUTH_REMOTE" \
--branch main \
--mount-root /tmp
artifact-fs daemon --root /tmp &
ls /tmp/starter-repo/
cat /tmp/starter-repo/README.md
git -C /tmp/starter-repo log --oneline -5Используйте недолговечный токен в URL аутентифицированного удаленного репозитория. Если нужен репозиторий меньшего размера или более простой локальный рабочий процесс, используйте обычный Протокол Git clone вместо этого.