Stop Generating Changelogs from Git Commits: How I Fixed the 'WHY' Problem in ChangelogBot
Описание и применение
Автоматизированные генераторы changelog, основанные на сообщениях коммитов, создают шумные записи без объяснения причин изменений. В статье описывается, как с помощью ChangelogBot, использующего LLM для извлечения «почему», и ограниченной конкурентности API‑запросов, удалось создать понятные changelog‑ы для больших репозиториев.
Задача
Automated changelog generators that use raw git commit messages produce noisy, intent‑missing release notes, forcing consumers to hunt through PR history for context.
Результат
By re‑engineering the metadata pipeline with bounded concurrency and explicit error handling, ChangelogBot now reliably generates clear, intent‑rich changelogs for large repositories without hitting GitHub rate limits or silently degrading CI output.
Рабочий процесс
- Audit existing changelog for noise and lack of context
- Identify shortcomings of commit‑based changelog generators
- Introduce ChangelogBot to map commits to PRs and extract PR bodies
- Implement bounded concurrency (mapConcurrent) to avoid GitHub secondary rate limits
- Replace broad try/catch with explicit error handling to surface failures
- Run ChangelogBot against large production releases to validate robustness
- Publish improved changelog format to release page
Доказательства
Generating release notes directly from raw git commits or PR titles is one of the most widespread anti‑patterns in modern DevOps.
The original commit resolver fetched pull request metadata for every commit in parallel… If a release contained 60 commits, this line fired 60 HTTPS requests to api.github.com in the exact same millisecond.
To prevent crashes, previous code wrapped API lookups in broad try/catch blocks and returned empty arrays on failure… CI exits 0, but changelog loses all PR context!
I avoided pulling heavy external dependencies like p-limit and instead implemented a native, lightweight bounded concurrency worker directly in TypeScript…
- Дата записи: 2026-11-03T17:14:03.993Z