- Remove nora-cli and nora-storage from workspace (stub crates, not used) - Remove root install.sh (duplicate of dist/install.sh) - Remove root logo.jpg (duplicate of ui/logo.jpg) - Remove committed SBOM .cdx.json files (generated by CI in release) - Remove stale .githooks/ (real hook is in .git/hooks/) - Update version in docs-ru to 0.2.32 - Add *.cdx.json to .gitignore
7.2 KiB
Руководство пользователя NORA
Версия: 0.2.32 Дата: 2026-03-16 Правообладатель: ООО «ТАИАРС» (торговая марка АРТАИС)
1. Общие сведения
NORA — реестр артефактов для команд разработки. Программа обеспечивает хранение и кэширование библиотек, Docker-образов и иных программных компонентов, используемых при сборке приложений.
Данное руководство предназначено для разработчиков, которые используют NORA в качестве источника зависимостей.
2. Настройка рабочего окружения
2.1. npm / Node.js
Укажите NORA в качестве реестра:
npm config set registry http://nora.example.com:4000/npm
Или создайте файл .npmrc в корне проекта:
registry=http://nora.example.com:4000/npm
После этого все команды npm install будут загружать пакеты через NORA. При первом обращении NORA загрузит пакет из внешнего реестра (npmjs.org) и сохранит его в кэш. Последующие обращения обслуживаются из кэша.
2.2. Docker
docker login nora.example.com:4000
docker pull nora.example.com:4000/library/nginx:latest
docker push nora.example.com:4000/myteam/myapp:1.0.0
2.3. Maven
Добавьте репозиторий в settings.xml:
<mirrors>
<mirror>
<id>nora</id>
<mirrorOf>central</mirrorOf>
<url>http://nora.example.com:4000/maven2</url>
</mirror>
</mirrors>
2.4. Python / pip
pip install --index-url http://nora.example.com:4000/simple flask
Или в pip.conf:
[global]
index-url = http://nora.example.com:4000/simple
2.5. Cargo / Rust
Настройка в ~/.cargo/config.toml:
[registries.nora]
index = "sparse+http://nora.example.com:4000/cargo/"
[source.crates-io]
replace-with = "nora"
2.6. Helm
Helm использует OCI-протокол через Docker Registry API:
helm push mychart-0.1.0.tgz oci://nora.example.com:4000/helm
helm pull oci://nora.example.com:4000/helm/mychart --version 0.1.0
3. Публикация пакетов
3.1. npm
npm publish --registry http://nora.example.com:4000/npm
Требования:
- Файл
package.jsonс полямиnameиversion. - Каждая версия публикуется однократно. Повторная публикация той же версии запрещена.
3.2. Docker
docker tag myapp:latest nora.example.com:4000/myteam/myapp:1.0.0
docker push nora.example.com:4000/myteam/myapp:1.0.0
3.3. Maven
mvn deploy -DaltDeploymentRepository=nora::default::http://nora.example.com:4000/maven2
3.4. Raw (произвольные файлы)
# Загрузка
curl -X PUT --data-binary @release.tar.gz http://nora.example.com:4000/raw/builds/release-1.0.tar.gz
# Скачивание
curl -O http://nora.example.com:4000/raw/builds/release-1.0.tar.gz
4. Работа в изолированной среде
Если сборочный сервер не имеет доступа к сети Интернет, используйте предварительное кэширование.
4.1. Кэширование зависимостей проекта
На машине с доступом к Интернету и NORA выполните:
nora mirror npm --lockfile package-lock.json --registry http://nora.example.com:4000
После этого все зависимости из lockfile будут доступны через NORA, даже если связь с внешними реестрами отсутствует.
4.2. Кэширование всех версий пакета
nora mirror npm --packages lodash,express --all-versions --registry http://nora.example.com:4000
Эта команда загрузит все опубликованные версии указанных пакетов.
5. Веб-интерфейс
NORA предоставляет веб-интерфейс для просмотра содержимого реестра:
http://nora.example.com:4000/ui/
Доступные функции:
- Просмотр списка артефактов по протоколам.
- Количество версий и размер каждого пакета.
- Журнал последних операций.
- Метрики загрузок.
6. Документация API
Интерактивная документация API доступна по адресу:
http://nora.example.com:4000/api-docs
Формат: OpenAPI 3.0 (Swagger UI).
7. Аутентификация
Если администратор включил аутентификацию, для операций записи требуется токен.
7.1. Получение токена
curl -u admin:password http://nora.example.com:4000/auth/token
7.2. Использование токена
# npm
npm config set //nora.example.com:4000/npm/:_authToken TOKEN
# Docker
docker login nora.example.com:4000
# curl
curl -H "Authorization: Bearer TOKEN" http://nora.example.com:4000/npm/my-package
Операции чтения по умолчанию не требуют аутентификации (роль read назначается автоматически).
8. Часто задаваемые вопросы
В: Что произойдёт, если внешний реестр (npmjs.org) станет недоступен?
О: NORA продолжит обслуживать запросы из кэша. Пакеты, которые ранее не запрашивались, будут недоступны до восстановления связи. Для предотвращения такой ситуации используйте nora mirror.
В: Можно ли публиковать приватные пакеты?
О: Да. Пакеты, опубликованные через npm publish или docker push, сохраняются в локальном хранилище NORA и доступны всем пользователям данного экземпляра.
В: Как обновить кэш метаданных?
О: Кэш метаданных npm обновляется автоматически по истечении TTL (по умолчанию 5 минут). Для немедленного обновления удалите файл metadata.json из каталога хранилища.
В: Поддерживаются ли scoped-пакеты npm (@scope/package)?
О: Да, полностью. Например: npm install @babel/core --registry http://nora.example.com:4000/npm.