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

ArtifactFS

ArtifactFS монтирует Git-репозиторий как локальную файловую систему, не дожидаясь полного клонирования. Это хорошо работает, когда вашей среде нужно быстро получить рабочее дерево и она может допустить подгрузку содержимого файлов по требованию.

Используйте ArtifactFS для больших репозиториев в sandbox, контейнерах и виртуальных машинах. Для небольших репозиториев подойдет обычный git clone обычно проще.

ArtifactFS работает с Удалённые репозитории Git в Artifacts и другие репозитории Git.

Выбирайте ArtifactFS, если

Для небольших репозиториев начните с обычного 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 вместо этого.