Compare commits
2 Commits
84964b62c1
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ec13410945 | |||
| 86f4ec379a |
@@ -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_TOKEN — токен Gitea со scope write:package (его владелец должен состоять в организации
|
# Секрет: PACKAGES_TOKEN — токен Gitea со scope write:package (его владелец должен состоять в организации
|
||||||
# Tansu с правом записи). Логин не нужен: npm авторизуется одним токеном.
|
# tansu с правом записи). Логин не нужен: npm авторизуется одним токеном.
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
@tnsu:registry=http://git.tnsu.kz/api/packages/Tansu/npm/
|
@tnsu:registry=https://git.tnsu.kz/api/packages/tansu/npm/
|
||||||
|
|||||||
+4
-4
@@ -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
|
||||||
|
|||||||
@@ -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,7 +70,7 @@ npm run storybook # витрина компонентов (localhost:6006)
|
|||||||
- **Тот же код не публикуется.** Пайплайн считает хэш исходников (`src` без тестов и историй Storybook,
|
- **Тот же код не публикуется.** Пайплайн считает хэш исходников (`src` без тестов и историй Storybook,
|
||||||
`package.json`, конфиги сборки, README), кладёт его в публикуемый `package.json` (поле `sourceHash`)
|
`package.json`, конфиги сборки, README), кладёт его в публикуемый `package.json` (поле `sourceHash`)
|
||||||
и сравнивает с последней опубликованной версией. Совпало — пайплайн падает с «Публиковать нечего».
|
и сравнивает с последней опубликованной версией. Совпало — пайплайн падает с «Публиковать нечего».
|
||||||
- Секрет: `PACKAGES_TOKEN` — токен Gitea со scope `write:package` (владелец — участник организации Tansu
|
- Секрет: `PACKAGES_TOKEN` — токен Gitea со scope `write:package` (владелец — участник организации tansu
|
||||||
с правом записи). Логин не нужен.
|
с правом записи). Логин не нужен.
|
||||||
|
|
||||||
Пробный прогон без публикации: `DRY_RUN=1 bash ci/publish.sh`.
|
Пробный прогон без публикации: `DRY_RUN=1 bash ci/publish.sh`.
|
||||||
|
|||||||
+3
-3
@@ -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:-}"
|
||||||
|
|
||||||
|
|||||||
Generated
+2
-2
@@ -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
@@ -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",
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export const ICON_NAMES = [
|
|||||||
'clipboard',
|
'clipboard',
|
||||||
'people',
|
'people',
|
||||||
'vehicle',
|
'vehicle',
|
||||||
|
'chair',
|
||||||
'chat',
|
'chat',
|
||||||
'camera',
|
'camera',
|
||||||
'image',
|
'image',
|
||||||
|
|||||||
Reference in New Issue
Block a user