feat(release): install channels (stable/beta) + RELEASING/CHANGELOG
- install.sh installs a moving channel ref: git:...@stable by default, PI_KIT_CHANNEL=beta|vX.Y.Z to override; pi update follows the channel - cheat sheet shows channel + new commands (/kit-doctor, /kit-help) - RELEASING.md: channel/tag release + rollback process; CHANGELOG.md (Keep a Changelog) - supersedes earlier 'no ref = latest' for controlled rollout Verified: install.sh syntax + channel resolution (stable default, beta/tag override).
This commit is contained in:
25
CHANGELOG.md
Normal file
25
CHANGELOG.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
Формат — [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), версии — [SemVer](https://semver.org/lang/ru/).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Security guardrails: `secret-scanner` (блок записи секретов), `commit-guard`
|
||||||
|
(Conventional Commits + скан секретов в сообщении), `llm-redaction` (редакция
|
||||||
|
секретов перед отправкой в LLM), `audit-log` (локальный аудит + опциональный endpoint).
|
||||||
|
- DX-команды: `/kit-doctor` (health-check окружения), `/kit-help` (каталог возможностей).
|
||||||
|
- Каналы установки (`stable`/`beta`) и процесс релизов (`RELEASING.md`); `PI_KIT_CHANNEL`.
|
||||||
|
- `config/company.json`: поле `auditEndpoint`.
|
||||||
|
- Тест-харнес guardrails: `npm test`.
|
||||||
|
|
||||||
|
## [0.1.0]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Базовый пакет: extensions (`company-context`, `protected-paths`, `permission-gate`),
|
||||||
|
скилы (jira-workflow, repo-map, docs-map, go/rust/typescript/python/kotlin/swift-standards),
|
||||||
|
команды `/bugfix` `/feature` `/review` `/rfc` `/kit-config`.
|
||||||
|
- `install.sh` с выбором профиля, гейтингом скилов, установкой публичных скилов и
|
||||||
|
интерактивной настройкой окружения (`~/.config/pi-kit/env.sh`).
|
||||||
|
- `config/company.json` как единый источник правды + `remoteConfigUrl`.
|
||||||
|
- Конвенции M.Video: URL (jira/wiki/gitlab), Conventional Commits, деплой `release-*`/`v*`.
|
||||||
47
RELEASING.md
Normal file
47
RELEASING.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Релизы и каналы `@mvideo/pi-kit`
|
||||||
|
|
||||||
|
Пакет исполняет код на машинах всех разработчиков, поэтому раскатка контролируется
|
||||||
|
**каналами** и **semver-тегами**, а не «всегда latest».
|
||||||
|
|
||||||
|
## Каналы
|
||||||
|
|
||||||
|
- **`stable`** — ветка, на которую сотрудники установлены по умолчанию
|
||||||
|
(`git:git.codelab.vc/ai/pi-kit@stable`). Указывает на проверенный релиз.
|
||||||
|
- **`beta`** — ветка для обкатки перед `stable` (по желанию). Установка: `PI_KIT_CHANNEL=beta`.
|
||||||
|
- Можно закрепиться на конкретный тег: `PI_KIT_CHANNEL=v1.2.3`.
|
||||||
|
|
||||||
|
`pi update --extensions` тянет текущее состояние канала, на который установлен пользователь.
|
||||||
|
|
||||||
|
## Как выпустить релиз
|
||||||
|
|
||||||
|
1. Собрать изменения в `main` через MR с ревью (правило репозитория).
|
||||||
|
2. Прогнать проверки: `npm test` (guardrails), `npm run typecheck` (при наличии peer-типов),
|
||||||
|
`pi install ./` + `/kit-doctor`.
|
||||||
|
3. Обновить версию в `package.json` и запись в `CHANGELOG.md` (раздел из `Unreleased`).
|
||||||
|
4. Поставить тег на нужный коммит `main`:
|
||||||
|
```bash
|
||||||
|
git tag -a vX.Y.Z -m "vX.Y.Z"
|
||||||
|
git push origin vX.Y.Z
|
||||||
|
```
|
||||||
|
5. Перевести канал на этот тег (fast-forward ветки канала):
|
||||||
|
```bash
|
||||||
|
git branch -f beta vX.Y.Z # сначала на beta для обкатки
|
||||||
|
git push origin beta
|
||||||
|
# после обкатки:
|
||||||
|
git branch -f stable vX.Y.Z
|
||||||
|
git push origin stable
|
||||||
|
```
|
||||||
|
6. Сотрудники получат обновление обычным `pi update --extensions`.
|
||||||
|
|
||||||
|
## Semver
|
||||||
|
|
||||||
|
- **patch** (`vX.Y.Z+1`) — фиксы guardrails/скилов/шаблонов без изменения поведения команд.
|
||||||
|
- **minor** — новые скилы/команды/расширения, обратно совместимо.
|
||||||
|
- **major** — несовместимые изменения (удаление команд, смена формата `config/company.json`).
|
||||||
|
|
||||||
|
## Откат
|
||||||
|
|
||||||
|
Перевести `stable` на предыдущий тег и запушить:
|
||||||
|
```bash
|
||||||
|
git branch -f stable vX.Y.(Z-1) && git push origin stable
|
||||||
|
```
|
||||||
21
install.sh
21
install.sh
@@ -14,10 +14,14 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# The ONLY place the repository address appears. No version ref on purpose, so
|
# The ONLY place the repository address appears. Employees install a CHANNEL
|
||||||
# `pi update --extensions` always pulls the latest main.
|
# (a moving git ref): `stable` (default, vetted releases) or `beta`. Maintainers
|
||||||
|
# fast-forward the channel branch to a tagged release. `pi update --extensions`
|
||||||
|
# then follows that channel. Override with PI_KIT_CHANNEL=beta (or a tag like v1.2.3).
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
PI_KIT_REPO="git:git.codelab.vc/ai/pi-kit"
|
PI_KIT_HOST="git.codelab.vc/ai/pi-kit"
|
||||||
|
PI_KIT_CHANNEL="${PI_KIT_CHANNEL:-stable}"
|
||||||
|
PI_KIT_REPO="git:${PI_KIT_HOST}@${PI_KIT_CHANNEL}"
|
||||||
|
|
||||||
MIN_NODE_MAJOR=20
|
MIN_NODE_MAJOR=20
|
||||||
INTERNAL_COURSE_URL="TODO: ссылка на внутренний курс по Pi"
|
INTERNAL_COURSE_URL="TODO: ссылка на внутренний курс по Pi"
|
||||||
@@ -316,15 +320,16 @@ fi
|
|||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────
|
||||||
Готово! Профиль: ${PROFILE}
|
Готово! Профиль: ${PROFILE} Канал: ${PI_KIT_CHANNEL}
|
||||||
|
|
||||||
Запуск: pi
|
Запуск: pi
|
||||||
Обновление: pi update --extensions
|
Обновление: pi update --extensions (следует за каналом ${PI_KIT_CHANNEL})
|
||||||
Окружение: ${ENV_FILE} (TRACKER_URL/JIRA_TOKEN/GITLAB_TOKEN/ключ провайдера)
|
Окружение: ${ENV_FILE} (TRACKER_URL/JIRA_TOKEN/GITLAB_TOKEN/ключ провайдера)
|
||||||
Сменить профиль: PI_KIT_PROFILE=backend ./install.sh (или перезапусти и выбери)
|
Сменить профиль: PI_KIT_PROFILE=backend ./install.sh (или перезапусти и выбери)
|
||||||
Команды: /bugfix <тикет> /feature <тикет>
|
Сменить канал: PI_KIT_CHANNEL=beta ./install.sh
|
||||||
/review [фокус] /rfc <тема> /kit-config
|
Команды: /bugfix <тикет> /feature <тикет> /review [фокус] /rfc <тема>
|
||||||
Проверка: /kit-config — покажет действующие корпоративные значения
|
/kit-config /kit-doctor /kit-help
|
||||||
|
Проверка: /kit-doctor — health-check окружения
|
||||||
|
|
||||||
Внутренний курс по Pi: ${INTERNAL_COURSE_URL}
|
Внутренний курс по Pi: ${INTERNAL_COURSE_URL}
|
||||||
────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user