Compare commits

...

4 Commits

Author SHA1 Message Date
gorbenko.pavel ec13410945 Реестр пакетов: организация Tansu переименована в tansu (#2)
test / test (push) Successful in 20s
Организацию на git.tnsu.kz переименовали в tansu. Адрес реестра @tnsu в .npmrc и resolved в package-lock.json приведены к новому имени. Gitea принимает оба написания, так что сборка работает и до влития.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: #2
2026-10-29 12:46:12 +00:00
Тимур Городецкий 86f4ec379a feat: иконка chair — кресло для раздела «Мебель» (0.15.0)
test / test (push) Successful in 15s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-29 17:19:27 +05:00
gorbenko.pavel 84964b62c1 Merge pull request 'Пайплайны test и publish, публикация в реестр организации Tansu' (#1) from feature/publish-pipeline into main
test / test (push) Successful in 15s
2026-10-28 12:49:04 +00:00
gorbenko.pavel 65fc6ced30 Публикация ui-kit: нужен только секрет PACKAGES_TOKEN, логин не используется
test / test (pull_request) Successful in 15s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:31:00 +05:00
9 changed files with 27 additions and 21 deletions
+3 -3
View File
@@ -1,12 +1,12 @@
name: publish name: publish
# Публикация @tnsu/ui-kit в реестр организации Tansu — только по кнопке (Actions -> publish -> Run workflow). # Публикация @tnsu/ui-kit в реестр организации tansu — только по кнопке (Actions -> publish -> Run workflow).
# Сначала юнит-тесты и сборка, потом ci/publish.sh: версию он считает сам (major.minor — из package.json, # Сначала юнит-тесты и сборка, потом ci/publish.sh: версию он считает сам (major.minor — из package.json,
# патч — следующий после опубликованного), а если код не менялся с последней опубликованной версии, # патч — следующий после опубликованного), а если код не менялся с последней опубликованной версии,
# падает с «Публиковать нечего». # падает с «Публиковать нечего».
# #
# Секреты: PACKAGES_USER — логин в Gitea, PACKAGES_TOKEN — его токен со scope write:package # Секрет: PACKAGES_TOKEN — токен Gitea со scope write:package (его владелец должен состоять в организации
# (пользователь должен состоять в организации Tansu с правом записи). # tansu с правом записи). Логин не нужен: npm авторизуется одним токеном.
on: on:
workflow_dispatch: workflow_dispatch:
+1 -1
View File
@@ -1 +1 @@
@tnsu:registry=http://git.tnsu.kz/api/packages/Tansu/npm/ @tnsu:registry=https://git.tnsu.kz/api/packages/tansu/npm/
+4 -4
View File
@@ -169,11 +169,11 @@ StatusBadge переписан в тонкий маппер REQUEST_STATUS→var
## Публикация (Gitea, НЕ GitLab!) ## Публикация (Gitea, НЕ GitLab!)
- Хостинг git — **Gitea 1.26.4** на http://git.tnsu.kz (не GitLab). Registry npm привязан - Хостинг git — **Gitea 1.26.4** на https://git.tnsu.kz (не GitLab). Registry npm привязан
к ВЛАДЕЛЬЦУ, не к проекту. Никакого "project ID" не нужно. к ВЛАДЕЛЬЦУ, не к проекту. Никакого "project ID" не нужно.
- Адрес registry: `http://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/` - Адрес registry: `https://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/`
- `.npmrc` в проекте (можно коммитить, НЕ секрет): - `.npmrc` в проекте (можно коммитить, НЕ секрет):
`@tnsu:registry=http://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/` `@tnsu:registry=https://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/`
- Токен (СЕКРЕТ) — в `~/.npmrc` (C:\Users\gorodetskiy.timur\.npmrc), в git НЕ попадает: - Токен (СЕКРЕТ) — в `~/.npmrc` (C:\Users\gorodetskiy.timur\.npmrc), в git НЕ попадает:
`//git.tnsu.kz/api/packages/timur.gorodetskiy/npm/:_authToken=<TOKEN>` `//git.tnsu.kz/api/packages/timur.gorodetskiy/npm/:_authToken=<TOKEN>`
- Токен создаётся в Gitea: аватар → Настройки → Приложения → права `package` = Чтение и запись. - Токен создаётся в Gitea: аватар → Настройки → Приложения → права `package` = Чтение и запись.
@@ -188,4 +188,4 @@ StatusBadge переписан в тонкий маппер REQUEST_STATUS→var
- Node: v22.x (как в SPFx: >=22.14 <23) - Node: v22.x (как в SPFx: >=22.14 <23)
- React 17.0.1, @fluentui/react ^8.106.4, tslib 2.3.1 - React 17.0.1, @fluentui/react ^8.106.4, tslib 2.3.1
- GitLab: http://git.tnsu.kz/timur.gorodetskiy/tnsu-ui-kit.git - GitLab: https://git.tnsu.kz/timur.gorodetskiy/tnsu-ui-kit.git
+5 -5
View File
@@ -6,13 +6,13 @@
## Установка в проект ## Установка в проект
Пакет лежит в реестре организации **Tansu** на git.tnsu.kz. Реестр публичный, а сам git.tnsu.kz Пакет лежит в реестре организации **tansu** на git.tnsu.kz. Реестр публичный, а сам git.tnsu.kz
доступен только из внутренней сети, поэтому **токен для установки не нужен** (из сети или по VPN). доступен только из внутренней сети, поэтому **токен для установки не нужен** (из сети или по VPN).
В корне проекта — файл `.npmrc` со строкой: В корне проекта — файл `.npmrc` со строкой:
``` ```
@tnsu:registry=http://git.tnsu.kz/api/packages/Tansu/npm/ @tnsu:registry=https://git.tnsu.kz/api/packages/tansu/npm/
``` ```
Затем: Затем:
@@ -62,7 +62,7 @@ npm run storybook # витрина компонентов (localhost:6006)
### Публикация новой версии ### Публикация новой версии
Публикует пайплайн **publish** в Gitea — по кнопке: Actions → publish → Run workflow. Сначала юнит-тесты Публикует пайплайн **publish** в Gitea — по кнопке: Actions → publish → Run workflow. Сначала юнит-тесты
и сборка, потом публикация в реестр Tansu. и сборка, потом публикация в реестр tansu.
- **Версию поднимает пайплайн.** В `package.json` задаются только major.minor (патч там не важен): - **Версию поднимает пайплайн.** В `package.json` задаются только major.minor (патч там не важен):
новая функциональность — поднять minor руками (`0.14.x` → `0.15.0`). Патч — следующий после самого новая функциональность — поднять minor руками (`0.14.x` → `0.15.0`). Патч — следующий после самого
@@ -70,8 +70,8 @@ npm run storybook # витрина компонентов (localhost:6006)
- **Тот же код не публикуется.** Пайплайн считает хэш исходников (`src` без тестов и историй Storybook, - **Тот же код не публикуется.** Пайплайн считает хэш исходников (`src` без тестов и историй Storybook,
`package.json`, конфиги сборки, README), кладёт его в публикуемый `package.json` (поле `sourceHash`) `package.json`, конфиги сборки, README), кладёт его в публикуемый `package.json` (поле `sourceHash`)
и сравнивает с последней опубликованной версией. Совпало — пайплайн падает с «Публиковать нечего». и сравнивает с последней опубликованной версией. Совпало — пайплайн падает с «Публиковать нечего».
- Секреты: `PACKAGES_USER` (логин в Gitea) и `PACKAGES_TOKEN` (его токен со scope `write:package`, - Секрет: `PACKAGES_TOKEN` — токен Gitea со scope `write:package` (владелец — участник организации tansu
участник организации Tansu с правом записи). с правом записи). Логин не нужен.
Пробный прогон без публикации: `DRY_RUN=1 bash ci/publish.sh`. Пробный прогон без публикации: `DRY_RUN=1 bash ci/publish.sh`.
+3 -3
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Публикация @tnsu/ui-kit в реестр организации Tansu с автоматической версией. # Публикация @tnsu/ui-kit в реестр организации tansu с автоматической версией.
# #
# bash ci/publish.sh # bash ci/publish.sh
# #
@@ -12,13 +12,13 @@
# метаданных реестра: архив реестр хранит как есть. # метаданных реестра: архив реестр хранит как есть.
# #
# Переменные: PACKAGES_TOKEN (scope write:package), REGISTRY_BASE (по умолчанию # Переменные: PACKAGES_TOKEN (scope write:package), REGISTRY_BASE (по умолчанию
# http://git.tnsu.kz/api/packages/Tansu), DRY_RUN=1 — всё посчитать и собрать, но не публиковать. # https://git.tnsu.kz/api/packages/tansu), DRY_RUN=1 — всё посчитать и собрать, но не публиковать.
# #
# Коды выхода: 0 — опубликовано; 1 — ошибка; 3 — публиковать нечего (код не менялся). # Коды выхода: 0 — опубликовано; 1 — ошибка; 3 — публиковать нечего (код не менялся).
set -euo pipefail set -euo pipefail
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."
REGISTRY_BASE="${REGISTRY_BASE:-http://git.tnsu.kz/api/packages/Tansu}" REGISTRY_BASE="${REGISTRY_BASE:-https://git.tnsu.kz/api/packages/tansu}"
DRY_RUN="${DRY_RUN:-}" DRY_RUN="${DRY_RUN:-}"
PACKAGES_TOKEN="${PACKAGES_TOKEN:-}" PACKAGES_TOKEN="${PACKAGES_TOKEN:-}"
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "@tnsu/ui-kit", "name": "@tnsu/ui-kit",
"version": "0.14.0", "version": "0.15.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@tnsu/ui-kit", "name": "@tnsu/ui-kit",
"version": "0.14.0", "version": "0.15.0",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@chromatic-com/storybook": "latest", "@chromatic-com/storybook": "latest",
+3 -3
View File
@@ -1,15 +1,15 @@
{ {
"name": "@tnsu/ui-kit", "name": "@tnsu/ui-kit",
"version": "0.14.0", "version": "0.15.0",
"description": "TNSU shared UI components for SPFx web parts", "description": "TNSU shared UI components for SPFx web parts",
"author": "Timur Gorodetskiy", "author": "Timur Gorodetskiy",
"license": "ISC", "license": "ISC",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "http://git.tnsu.kz/timur.gorodetskiy/tnsu-ui-kit.git" "url": "https://git.tnsu.kz/timur.gorodetskiy/tnsu-ui-kit.git"
}, },
"publishConfig": { "publishConfig": {
"registry": "http://git.tnsu.kz/api/packages/Tansu/npm/" "registry": "https://git.tnsu.kz/api/packages/tansu/npm/"
}, },
"type": "module", "type": "module",
"main": "./dist/index.cjs", "main": "./dist/index.cjs",
+5
View File
@@ -78,6 +78,11 @@ export const IconSprite: React.FC = () => (
<circle cx="7.5" cy="15.5" r="1.5" fill="currentColor" stroke="none" /> <circle cx="7.5" cy="15.5" r="1.5" fill="currentColor" stroke="none" />
<circle cx="16.5" cy="15.5" r="1.5" fill="currentColor" stroke="none" /> <circle cx="16.5" cy="15.5" r="1.5" fill="currentColor" stroke="none" />
</symbol> </symbol>
<symbol id="i-chair" viewBox="0 0 24 24">
<path d="M6 10V6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4" />
<path d="M4 16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4a2 2 0 0 0-4 0v1H8v-1a2 2 0 0 0-4 0z" />
<path d="M6 18v2M18 18v2" />
</symbol>
<symbol id="i-chat" viewBox="0 0 24 24"> <symbol id="i-chat" viewBox="0 0 24 24">
<path d="M21 12a9 9 0 0 1-9 9 9 9 0 0 1-5.46-1.84L3 21l1.84-3.54A9 9 0 1 1 21 12z" /> <path d="M21 12a9 9 0 0 1-9 9 9 9 0 0 1-5.46-1.84L3 21l1.84-3.54A9 9 0 1 1 21 12z" />
</symbol> </symbol>
+1
View File
@@ -16,6 +16,7 @@ export const ICON_NAMES = [
'clipboard', 'clipboard',
'people', 'people',
'vehicle', 'vehicle',
'chair',
'chat', 'chat',
'camera', 'camera',
'image', 'image',