changelog-generator

更新日志生成器

安装

概览

什么是changelog-generator

Changelog Generator 是一款专为工程团队设计的自动化发布管理工具,核心目标是基于 Conventional Commits 规范自动生成结构清晰、内容可审计的更新日志。它通过将提交解析、语义化版本升级逻辑和日志渲染解耦,使开发团队能够在保持对发布内容编辑控制权的同时,实现高效、一致的发布流程。该工具特别适合需要频繁发布版本、重视文档一致性和可追溯性的项目,尤其适用于采用 Git 作为版本控制系统并希望将代码变更自动转化为用户可读发布说明的团队。其设计哲学强调从原始提交信息中提取高质量、面向用户的发布内容,而非简单罗列技术细节,从而提升发布质量和团队协作效率。 该工具支持多种主流编程语言和构建系统的项目,能够无缝集成到 CI/CD 流水线中,实现从提交历史到最终发布文档的端到端自动化。它不仅生成标准的 Keep a Changelog 格式(包含 Added、Changed、Fixed、Deprecated、Removed、Fixed 等章节),还支持 JSON 输出以满足机器处理需求。此外,它还内置了提交消息验证功能,可在合并请求阶段拦截不符合规范的提交,确保整个团队的提交风格统一。这种双重机制——既支持自动化生成又保留人工审核环节——使其在追求效率与质量之间取得了良好平衡。 在实际使用中,Changelog Generator 提供了灵活的接口选择:既可以读取两个 Git tag 之间的提交历史,也可以从标准输入或文件中导入提交内容;既可以输出 Markdown 格式的易读文档,也能生成结构化数据供其他系统消费。它还特别针对 monorepo(多包仓库)场景进行了优化,允许按模块作用域过滤提交记录,为每个子包生成独立的更新日志。这些特性共同构成了一个强大而灵活的发布治理框架,帮助团队建立标准化、可预测且易于维护的版本发布流程。

核心功能特点

  1. 基于 Conventional Commits 规范自动解析提交历史
  2. 支持生成符合 Keep a Changelog 标准的 Markdown 和 JSON 格式输出
  3. 提供提交消息 linting 功能,可在 PR 阶段拦截不规范提交
  4. 支持从 Git 范围、文件或标准输入读取提交内容
  5. 具备语义化版本升级建议能力(major/minor/patch)
  6. 专为 monorepo 设计,支持按模块作用域过滤提交

适用场景

Changelog Generator 最典型的应用场景是在正式发布前自动生成发布说明草稿。当开发团队完成一轮功能开发并准备打标签发布时,可以通过指定起始和结束 tag(如 v1.3.0 到 v1.4.0),让工具自动提取期间所有符合 Conventional Commit 规范的提交,并将其组织成结构化的更新日志。这种方式不仅节省了大量手动编写发布说明的时间,还能确保所有重要变更都被捕获且格式统一。生成的初稿可由产品经理或技术作者进行润色调整,使其更贴近终端用户视角,最终形成高质量的发布文档。 另一个关键使用场景是集成到持续集成/持续部署(CI)流程中。通过在 CI 配置中添加脚本调用,可以在每次推送 release 分支或打标签时自动触发 changelog 生成。例如,GitHub Actions 工作流可以监听 tag 事件,运行 generate_changelog.py 脚本产出 JSON 格式的发布草案,并上传为 GitHub Release 的附件。这种自动化机制极大提升了发布频率和一致性,同时减少了人为遗漏风险。结合 PR 检查阶段的 commit_linter.py 验证,整个发布链条实现了从代码提交到文档发布的闭环管理。 对于大型单体仓库或多包项目(monorepo),Changelog Generator 同样表现出色。它允许开发者根据提交中的 scope 字段(如 feat(api): …)筛选特定模块的变更,为每个子包生成独立的更新日志。这样既能保持整体项目的统一发布节奏,又能满足各子模块维护者对本地文档的所有权需求。此外,该工具还建议在根目录维护基础设施级变更的日志,而在各子包目录下存放其专属的更新记录,从而实现清晰的职责划分和文档归属。这种分层策略特别适合由多个小团队共同维护的大型项目,有助于提升协作透明度和文档可维护性。