Навигация
Реестр пакетов
Как публиковать и устанавливать npm, PyPI, Cargo, Maven, NuGet и Generic пакеты в GitRiver
GitRiver имеет встроенный реестр пакетов для 6 популярных форматов. Отдельный сервис не нужен - пакеты хранятся рядом с кодом.
Это бесплатная функция - доступна в Community без ограничений.
Зачем
- Приватные пакеты для вашей команды (не публикуются в npm/PyPI)
- Автоматическая публикация из CI/CD при каждом релизе
- Единый доступ через те же токены, что и к репозиториям
- Не зависите от внешних реестров
npm
Для Node.js проектов.
Публикация
Создайте файл .npmrc в проекте:
@owner:registry=https://git.example.com/api/packages/owner/repo/npm
//git.example.com/api/packages/owner/repo/npm:_authToken=ВАШ_ТОКЕН
Затем:
npm publish
Установка
npm install @owner/package \
--registry https://git.example.com/api/packages/owner/repo/npm
Или добавьте в .npmrc проекта, чтобы не указывать каждый раз:
@owner:registry=https://git.example.com/api/packages/owner/repo/npm
PyPI
Для Python-проектов.
Публикация
pip install twine
twine upload dist/* \
--repository-url https://git.example.com/api/packages/owner/repo/pypi/legacy/ \
-u __token__ -p ВАШ_ТОКЕН
Логин всегда
__token__, пароль - ваш персональный токен или токен деплоя.
Установка
pip install my-package \
--index-url https://git.example.com/api/packages/owner/repo/pypi/simple
Cargo
Для Rust-проектов.
Настройка
Добавьте в ~/.cargo/config.toml (или .cargo/config.toml в проекте):
[registries.gitriver]
index = "sparse+https://git.example.com/api/packages/owner/repo/cargo/index/"
Публикация
cargo publish --registry gitriver --token ВАШ_ТОКЕН
Установка
В Cargo.toml зависимого проекта:
[dependencies]
my-lib = { version = "1.0", registry = "gitriver" }
Maven
Для Java/Kotlin-проектов.
Публикация
Добавьте в pom.xml:
<distributionManagement>
<repository>
<id>gitriver</id>
<url>https://git.example.com/api/packages/owner/repo/maven/</url>
</repository>
</distributionManagement>
И в ~/.m2/settings.xml:
<servers>
<server>
<id>gitriver</id>
<username>ваш_логин</username>
<password>ВАШ_ТОКЕН</password>
</server>
</servers>
Затем:
mvn deploy
Установка
Добавьте репозиторий в pom.xml:
<repositories>
<repository>
<id>gitriver</id>
<url>https://git.example.com/api/packages/owner/repo/maven/</url>
</repository>
</repositories>
NuGet
Для .NET-проектов.
Публикация
dotnet nuget push MyPackage.1.0.0.nupkg \
--source https://git.example.com/api/packages/owner/repo/nuget \
--api-key ВАШ_ТОКЕН
Установка
Добавьте источник:
dotnet nuget add source \
https://git.example.com/api/packages/owner/repo/nuget/ \
--name gitriver \
--username ваш_логин \
--password ВАШ_ТОКЕН
Затем:
dotnet add package MyPackage
Generic
Для произвольных файлов (бинарники, архивы, документация).
Загрузка
curl -T myapp-v1.0.tar.gz \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
https://git.example.com/api/packages/owner/repo/generic/myapp/1.0.0/myapp-v1.0.tar.gz
Скачивание
curl -L -O \
https://git.example.com/api/packages/owner/repo/generic/myapp/1.0.0/myapp-v1.0.tar.gz
Автопубликация из CI/CD
Типичный сценарий: при push тега v* автоматически собирать и публиковать пакет.
name: Release
on:
push:
tags: ['v*']
jobs:
publish:
image: node:22
steps:
- run: |
echo "//git.example.com/api/packages/$CI_REPOSITORY_OWNER/$CI_REPOSITORY_NAME/npm:_authToken=$CI_JOB_TOKEN" > .npmrc
npm publish
CI_JOB_TOKEN автоматически доступен в каждой CI-задаче и имеет права на реестр текущего репозитория.
Управление пакетами
Просмотр, версии и удаление пакетов: вкладка «Пакеты» в репозитории.