Release Automation · Plugin

Мы релизим 150+ пакетов через него.
Каждый раз.

Один плагин закрывает весь цикл: проверки, сборка, changelog, npm publish, git тег. Без скриптов, без памятки в Notion, без «кажется забыл запушить тег».

Как это выглядит

Один запуск. Вот что происходит.

kb release run

$ kb release run

  ╭─ Release Plan ───────────────────────────────────────────────╮
  │  12 package(s) · strategy: lockstep                          │
  │                                                              │
  │  ·  @kb-labs/core-types              1.4.1  →  1.4.2         │
  │  ·  @kb-labs/core-platform           1.4.1  →  1.4.2         │
  │  ·  @kb-labs/sdk                     1.4.1  →  1.4.2         │
  │  ·  @kb-labs/release-manager-core   1.4.1  →  1.4.2          │
  │  ·  ... 8 more packages                                      │
  ╰──────────────────────────────────────────────────────────────╯

Proceed with release? [y/N] y

  ~  [4.1s] Running 3 pre-release check(s)...
  ~  [18.2s] Building 12 package(s)...
  ~  [22.4s] Verifying package artifacts...
  ~  [23.0s] Updating package versions...
  ~  [25.1s] Generating changelog...
  ~  [27.3s] Publishing packages...
  ~  [44.8s] Committing and tagging release...
  ✓  Release completed

CHANGELOG.md · corporate-ai

markdown
## [1.4.2] - 2026-05-24

> **@kb-labs/release-manager-core** 1.4.1 → 1.4.2 (patch)

### Fixes
- Atomic build now correctly handles symlinks inside dist/
- Checkpoint detection skips stale entries older than 24h

### Internal
- Pipeline timing reported per-step in `kb release report`

Четыре встроенных шаблона: corporate-ai, corporate, technical, compact. Если LLM недоступен — fallback на plain список.

Пайплайн

Восемь шагов. Строго по порядку.

Каждый шаг можно запустить отдельно. Каждый падает явно — с понятным сообщением.

1Lint
ESLint по всем affected-пакетам. Быстро — только изменённые.
2Type-check
tsc project references в порядке зависимостей. Ловит ошибки между пакетами.
3Test
Vitest с покрытием. Пропускает пакеты без изменённых файлов.
4AI Review
LLM ревьюит дифф на логические ошибки, безопасность и стиль.
5QA Gate
Качественные проверки на уровне пакетов. Блокирует при деградации.
6Impact
Анализ графа зависимостей — какие пакеты и тесты реально затронуты.
7Build
Топологическая сборка с DTS. Только изменённые пакеты + зависимые.
8Release
Публикация в npm + GitHub Release с changelog. Проходит после всех предыдущих стадий.
Почему именно так

Три решения, которые важны.

Воркфлоу как код, а не конфиг

Пайплайны релизов живут в YAML под version control — ревьюируются, отличаются, откатываются как любые другие изменения. Никакого GUI-состояния на экспорт, никакого vendor-формата для миграции.

Каждая стадия — плагин

Lint, review, QA, deploy — каждый шаг это типизированный плагин с задекларированными возможностями. Заменяй любую стадию без касания остального пайплайна.

Fail fast, трейс всего

Стадии идут в порядке с явными зависимостями. Первая ошибка останавливает пайплайн. Каждый запуск полностью трейсится: входы, выходы, тайминг и вызовы плагинов.

--flow

Независимые релизы для разных частей монорепо.

Flow — именованный профиль релиза. Полностью заменяет три вещи: какие пакеты собирать, стратегию версионирования, набор проверок. Остальное (registry, changelog, git) берётся из глобального конфига.

Платформа и SDK релизятся независимо — одной командой каждая. 150+ пакетов, но никогда не всё сразу.

pnpm kb workflow run release
пакеты@kb-labs/core-platform, @kb-labs/sdkстратегияaffected

Lint → type-check → test → AI review → build → publish. Только изменённые пакеты.

pnpm kb workflow run release --all
пакетыВсе 35+ пакетовстратегияfull

Принудительный полный пайплайн независимо от git-состояния. Для мажорных релизов.

Flow полностью заменяет глобальный packages конфиг — не мерджит. Пакеты выбираются glob-паттернами.

checks config

json
"checks": [
  {
    "id": "type-check",
    "command": "pnpm type-check",
    "runIn": "repoRoot"
  },
  {
    "id": "test",
    "command": "pnpm test",
    "runIn": "perPackage",
    "timeoutMs": 60000
  },
  {
    "id": "size-limit",
    "command": "pnpm size-limit --json",
    "parser": "json",
    "runIn": "scopePath",
    "optional": true
  }
]
Кастомные проверки

Не просто список команд.

Каждый чек — объект с контролем где и как запускается. Checks переопределяются на уровне flow — у платформы и SDK свои наборы.

runIn: repoRootrunIn: perPackagerunIn: scopePathparser: jsonoptionaltimeoutMs
Конфигурация

Всё в одном файле. Никакого лишнего конфига.

Конфиг живёт в .kb/kb.config.json рядом с остальными настройками KB Labs. Никакого отдельного release.config.js.

  • release.workflow — путь к YAML-файлу воркфлоу релиза
  • release.targets — какие пакеты включать в пайплайн
  • release.gates — обязательные стадии перед публикацией
  • release.aiReview — модель и конфиг промпта для AI review
  • release.npm — URL реестра, уровень доступа и токен публикации
json
{
  "release": {
    "changelog": {
      "template": "corporate-ai",
      "locale": "en"
    },
    "flows": {
      "platform": {
        "packages": {
          "include": ["@kb-labs/core-*", "@kb-labs/plugin-*", "@kb-labs/adapter-*"]
        },
        "versioningStrategy": "lockstep",
        "checks": ["pnpm type-check", "pnpm test"]
      },
      "sdk": {
        "packages": {
          "include": ["@kb-labs/sdk", "@kb-labs/agent-sdk"]
        },
        "versioningStrategy": "independent",
        "checks": ["pnpm lint", "pnpm type-check", "pnpm test"]
      }
    }
  }
}
Начать

Хотите навести порядок в релизном пайплайне?

kb marketplace install @kb-labs/release-entry
Автоматизация релизов — KB Labs