GitRiver GitRiver
EN
Навигация

Реестр пакетов

Как публиковать и устанавливать 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-задаче и имеет права на реестр текущего репозитория.


Управление пакетами

Просмотр, версии и удаление пакетов: вкладка «Пакеты» в репозитории.