ci(hooks): добавить commit-msg и шаблон Conventional Commits
quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 6s
quality / changes (push) Successful in 4s
quality / docker-check (push) Skipped
quality / web (push) Successful in 57s
quality / api (push) Successful in 41s
CD / quality (push) Successful in 1m46s
CD / publish (push) Successful in 11m48s

Без type/scope semantic-release не ставил тег и пропускал bake.
This commit is contained in:
Denozordec
2026-09-04 13:43:48 +07:00
parent dd3c378b5f
commit 64e6df8703
8 changed files with 120 additions and 25 deletions
+29 -15
View File
@@ -1,36 +1,50 @@
---
description: Conventional commits на русском языке
description: Conventional commits на русском — обязательно для semantic-release
globs: "**/*"
alwaysApply: false
alwaysApply: true
---
# Commit messages (русский)
Формат: `<type>[optional scope]: <описание>`
Формат: `тип(scope): описание на русском`
semantic-release на push в `main` создаёт тег и публикует Docker **только** если среди коммитов с прошлого тега есть `feat` / `fix` / `perf` / `ci` / `refactor` (или BREAKING).
Сообщения вроде `Init Commit`, `Update CDN Manager: …`, `Enhance …` **не парсятся** → CD пишет `No releasable commits — skipping image publish`.
## Типы
- `feat` — только новая UX-фича для пользователя
- `fix` — исправление бага
- `chore` — конфиг, зависимости, правила, CI
- `refactor` — рефакторинг без изменения поведения
- `docs` — документация
- `test` — тесты
- `perf` — производительность
- `fix` — исправление бага / регрессии / вёрстки
- `chore` / `docs` / `build` — конфиг, правила, документация (**без** релиза)
- `ci` — CI/CD, hooks (patch-релиз)
- `refactor` — рефакторинг без смены UX (patch)
- `test` / `style` / `perf` — как обычно
## Правила
- Префикс `type` и `scope` — **английский**; текст после `:` — **только русский** (кириллица)
- Subject в **императиве**, без точки в конце
- Subject и body — **на русском**
- Body (опционально) — что и зачем, не как
- Scope в скобках при необходимости: `feat(domains): добавить фильтр по статусу`
- Scope — **один** идентификатор **без запятых**: `web`, `api`, `ci`, `docker`, `fleet`
- Локальный hook `.husky/commit-msg` гоняет `commitlint`
## Примеры
```
fix(frontend): заменить raw table на shadcn Table на странице доменов
feat(fleet): добавить CRUD нод и алиасов
feat(certificates): добавить предупреждение об истечении срока
fix(web): выровнять AttentionQueue на дашборде
chore(rules): консолидировать правила shadcn/ui для Cursor
ci(hooks): добавить commit-msg для Conventional Commits
chore(docs): описать Traefik deploy
```
## Запрещено
```
Init Commit
Update CDN Manager: Add …
Enhance CDN Manager: …
Refactor: Remove …
feat: add nodes
```