Пайплайны test и publish, реестр — организация Tansu
- test: юнит-тесты и сборка на каждый push в main, на PR и по кнопке - publish: по кнопке тесты и публикация в реестр Tansu; ci/publish.sh сам считает патч-версию по реестру (major.minor — из package.json) и не публикует, если хэш кода совпал с последней опубликованной версией - .npmrc и publishConfig — реестр Tansu, repository — Tansu/tnsu-ui-kit - README: установка без токена, публикация кнопкой Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,40 +4,15 @@
|
||||
|
||||
> Внутренняя память проекта (решения, план, прогресс) — в [PROJECT.md](./PROJECT.md).
|
||||
|
||||
## Первичная настройка (один раз на каждого разработчика)
|
||||
|
||||
Пакет лежит в приватном registry (Gitea), поэтому перед первой установкой нужно один
|
||||
раз настроить доступ. Дальше про это можно забыть.
|
||||
|
||||
**Шаг 1. Создать токен в Gitea:**
|
||||
1. Открой http://git.tnsu.kz → кликни на свой аватар справа вверху → **Настройки**.
|
||||
2. Слева: **Приложения**.
|
||||
3. В блоке «Управление токенами» → **Создать новый токен**:
|
||||
- Имя: например `npm-read`.
|
||||
- Права (scopes): найди строку **`package`** и поставь **«Прочитанные»** (Read).
|
||||
Остальное — «Нет доступа».
|
||||
4. Нажми **Генерировать токен** и **сразу скопируй** его (показывается один раз).
|
||||
|
||||
**Шаг 2. Прописать токен у себя на компьютере.**
|
||||
Создай (или дополни) файл `.npmrc` в своей домашней папке
|
||||
(`C:\Users\<твоё-имя>\.npmrc`) одной строкой:
|
||||
|
||||
```
|
||||
//git.tnsu.kz/api/packages/timur.gorodetskiy/npm/:_authToken=ВСТАВЬ_СВОЙ_ТОКЕН
|
||||
```
|
||||
|
||||
> ⚠️ Токен — это как пароль. Он лежит в домашней папке, **вне проекта**, и в git не попадает.
|
||||
> Никогда не коммить его и не вставляй в код.
|
||||
|
||||
Всё. Теперь `npm i` в любом проекте, где подключён `@tnsu/ui-kit`, будет работать.
|
||||
|
||||
## Установка в проект
|
||||
|
||||
Убедись, что в корне проекта есть файл `.npmrc` со строкой (для request-portal он уже
|
||||
закоммичен):
|
||||
Пакет лежит в реестре организации **Tansu** на git.tnsu.kz. Реестр публичный, а сам git.tnsu.kz
|
||||
доступен только из внутренней сети, поэтому **токен для установки не нужен** (из сети или по VPN).
|
||||
|
||||
В корне проекта — файл `.npmrc` со строкой:
|
||||
|
||||
```
|
||||
@tnsu:registry=http://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/
|
||||
@tnsu:registry=http://git.tnsu.kz/api/packages/Tansu/npm/
|
||||
```
|
||||
|
||||
Затем:
|
||||
@@ -86,11 +61,21 @@ npm run storybook # витрина компонентов (localhost:6006)
|
||||
|
||||
### Публикация новой версии
|
||||
|
||||
```powershell
|
||||
# 1. поднять version в package.json (напр. 0.0.1 → 0.0.2)
|
||||
npm run build
|
||||
npm publish
|
||||
```
|
||||
Публикует пайплайн **publish** в Gitea — по кнопке: Actions → publish → Run workflow. Сначала юнит-тесты
|
||||
и сборка, потом публикация в реестр Tansu.
|
||||
|
||||
> npm не даёт перезаписать уже опубликованную версию — перед публикацией всегда
|
||||
> бампай `version` в package.json.
|
||||
- **Версию поднимает пайплайн.** В `package.json` задаются только major.minor (патч там не важен):
|
||||
новая функциональность — поднять minor руками (`0.14.x` → `0.15.0`). Патч — следующий после самого
|
||||
большого опубликованного с тем же major.minor. В git ничего не коммитится.
|
||||
- **Тот же код не публикуется.** Пайплайн считает хэш исходников (`src` без тестов и историй Storybook,
|
||||
`package.json`, конфиги сборки, README), кладёт его в публикуемый `package.json` (поле `sourceHash`)
|
||||
и сравнивает с последней опубликованной версией. Совпало — пайплайн падает с «Публиковать нечего».
|
||||
- Секреты: `PACKAGES_USER` (логин в Gitea) и `PACKAGES_TOKEN` (его токен со scope `write:package`,
|
||||
участник организации Tansu с правом записи).
|
||||
|
||||
Пробный прогон без публикации: `DRY_RUN=1 bash ci/publish.sh`.
|
||||
|
||||
Версии до 0.14.0 скопированы из прежнего реестра `timur.gorodetskiy` без хэша, поэтому первая публикация
|
||||
пайплайном выпустит `0.14.1` даже без изменений кода; дальше проверка работает как обычно.
|
||||
|
||||
На каждый push и pull request пайплайн **test** гоняет юнит-тесты и сборку.
|
||||
|
||||
Reference in New Issue
Block a user