172 lines
3.5 KiB
Markdown
172 lines
3.5 KiB
Markdown
# CHANGELOG Generation - VoIdea
|
|
|
|
**Дата:** 2026-05-10
|
|
**Статус:** Backlog
|
|
|
|
---
|
|
|
|
## Обзор
|
|
|
|
Автоматическая генерация CHANGELOG на основе коммитов и conventional commits.
|
|
|
|
---
|
|
|
|
## Структура файлов
|
|
|
|
```
|
|
CHANGELOG/
|
|
├── v1.0.md # При смене MAJOR (1.0.0 -> 1.1.0 -> ...)
|
|
├── v1.1.md # При смене MINOR
|
|
├── v2.0.md # При смене MAJOR
|
|
└── ...
|
|
```
|
|
|
|
### Правила
|
|
|
|
- **MAJOR (X)** → новый файл vX.0.md
|
|
- **MINOR (Y)** → новый файл vX.Y.md
|
|
- **PATCH (Z)** → добавляется в конец существующего файла
|
|
|
|
---
|
|
|
|
## Формат CHANGELOG файла
|
|
|
|
```markdown
|
|
# Changelog v1.0
|
|
|
|
## [1.0.5] - 2026-05-10
|
|
### Added
|
|
- Feature X (commit: abc123)
|
|
|
|
### Fixed
|
|
- Bug Y (commit: def456)
|
|
|
|
## [1.0.4] - 2026-05-09
|
|
### Added
|
|
- ...
|
|
|
|
## [1.0.0] - 2026-05-01
|
|
### Added
|
|
- Initial release
|
|
```
|
|
|
|
---
|
|
|
|
## Conventional Commits
|
|
|
|
| Тип | Влияние |
|
|
|-----|---------|
|
|
| `feat:` | Added (MINOR) |
|
|
| `fix:` | Fixed (PATCH) |
|
|
| `docs:` | Changed (no version) |
|
|
| `refactor:` | Changed (no version) |
|
|
| `test:` | Changed (no version) |
|
|
| `chore:` | Changed (no version) |
|
|
| `BREAKING:` | Major (MAJOR) |
|
|
|
|
---
|
|
|
|
## Генерация
|
|
|
|
### SpecAgent responsibilities
|
|
|
|
1. **Мониторинг тегов**
|
|
- При создании нового тега → запуск генерации
|
|
|
|
2. **Анализ коммитов**
|
|
- Парсинг conventional commits
|
|
- Группировка по типу
|
|
|
|
3. **Генерация файла**
|
|
- Определение какой файл создать/обновить
|
|
- Формирование записей
|
|
|
|
4. **Проверка**
|
|
- Валидация формата
|
|
- Сохранение в CHANGELOG/
|
|
|
|
---
|
|
|
|
## CI/CD Integration
|
|
|
|
### При push в main
|
|
|
|
```yaml
|
|
# .github/workflows/changelog.yml
|
|
name: Changelog
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
generate:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Generate Changelog
|
|
run: python scripts/generate_changelog.py
|
|
- name: Commit
|
|
run: |
|
|
git add CHANGELOG/
|
|
git commit -m "docs: update changelog"
|
|
git push
|
|
```
|
|
|
|
### При создании тега
|
|
|
|
```python
|
|
# scripts/generate_changelog.py
|
|
import git
|
|
from pathlib import Path
|
|
|
|
def generate_changelog(tag: str):
|
|
commits = get_commits_since_last_tag()
|
|
|
|
changes = {
|
|
'added': [],
|
|
'fixed': [],
|
|
'changed': []
|
|
}
|
|
|
|
for commit in commits:
|
|
type, message = parse_conventional_commit(commit.message)
|
|
changes[type].append(f"- {message} ({commit.hash[:7]})")
|
|
|
|
update_changelog_file(tag, changes)
|
|
```
|
|
|
|
---
|
|
|
|
## Ручная генерация
|
|
|
|
```bash
|
|
# При необходимости
|
|
python scripts/generate_changelog.py --tag 1.0.0 --from 0.9.0
|
|
```
|
|
|
|
---
|
|
|
|
## Автоматическая документация
|
|
|
|
После генерации:
|
|
1. DocAgent обновляет PROJECT_GUIDE.md (ссылка на новую версию)
|
|
2. SpecAgent обновляет project.json
|
|
3. Уведомление в админ-панель
|
|
|
|
---
|
|
|
|
## TODO
|
|
|
|
- [ ] Создать scripts/generate_changelog.py
|
|
- [ ] Настроить CI/CD workflow
|
|
- [ ] Интегрировать со SpecAgent
|
|
- [ ] Добавить тесты
|
|
- [ ] Документировать процесс
|
|
|
|
---
|
|
|
|
*Создано: 2026-05-10*
|
|
*Управляется SpecAgent* |