菜单

发布流程和维护

相关源文件

本文档概述了 bat 项目的完整发布流程,包括版本更新、变更日志管理、资源构建和部署程序。它为维护者提供了一份全面的清单,以确保发布的一致性和可靠性。

有关构建系统和 CI/CD 流水线的信息,请参阅 构建系统和 CI/CD

发布生命周期概述

bat 的发布流程遵循一个结构化的工作流程,以确保质量、一致性和对更改的正确记录。该流程可按如下方式可视化:

来源: doc/release-checklist.md1-85

详细发布流程

1. 版本更新

在创建新版本之前,必须在多个地方更新版本号:

  1. 更新 Cargo.toml 中的版本号,并运行 cargo build 以更新 Cargo.lock
  2. 确定当前最低支持的 Rust 版本 (MSRV)。
  3. 更新 README.md 和本地化 README 文件中的版本号和 MSRV 引用。

来源: doc/release-checklist.md3-12

2. CHANGELOG 管理

必须更新 CHANGELOG 以反映自上次发布以来的所有更改。

  1. 从 GitHub 发布页面生成初步的发布说明。
  2. 与当前的 CHANGELOG.md 进行比较,以识别缺失的条目。
  3. 为即将发布的版本创建一个新部分。
  4. 将条目组织到适当的类别中(功能、错误修复等)。

来源: doc/release-checklist.md13-22

3. 资源重新构建

在每次发布前都必须重建语法定义和主题。

  1. 安装最新的 bat 主分支版本。
  2. 运行资源创建脚本。
  3. 提交更新后的二进制资源文件。

来源: doc/release-checklist.md23-29

4. 文档审查

所有面向用户的文档都必须经过准确性审查。

  1. 审查简短帮助输出(-h)。
  2. 审查长帮助输出(--help)。
  3. 审查 man page(可在 CI 输出中找到)。

来源: doc/release-checklist.md30-35

5. 发布前检查

在继续发布之前,必须执行几项检查。

  1. 推送所有更改并等待 CI 成功。
  2. 可以选择手动测试新功能和命令行选项。
  3. 运行 cargo publish --dry-run 以确保发布能成功。

来源: doc/release-checklist.md36-45

6. 发布创建

实际发布过程包括:

  1. 创建并推送 Git 标签(例如,vX.Y.Z)。
  2. 根据 CHANGELOG 创建带有说明的 GitHub 发布。
  3. 等待 CI 部署二进制文件。
  4. 从干净的仓库发布到 crates.io。

来源: doc/release-checklist.md46-60

7. 发布后任务

发布成功后

  1. 在 CHANGELOG.md 的顶部准备一个新的“未发布”部分。
  2. 为下一个发布周期设置类别。

来源: doc/release-checklist.md61-84

发布构件和分发

发布流程会生成多个构件,这些构件通过不同的渠道进行分发。

工件类型分发渠道创建方法
源代码GitHub 发布Git 标签
二进制归档GitHub 发布CI 部署
Debian 包GitHub 发布CI 部署
Cratecrates.io手动 cargo publish

来源: doc/release-checklist.md46-60

与发布流程相关的代码实体

下图将发布流程映射到特定的代码实体和文件。

来源: doc/release-checklist.md1-85

资源构建过程的详细视图

资源构建过程是发布工作流的关键部分。

来源: doc/release-checklist.md23-29

维护程序

依赖管理

依赖项通过 Dependabot PR 定期更新,如果 CI 通过,这些 PR 会被自动合并。这些更新通常不会手动添加到 CHANGELOG 中,但在发布过程中应进行审查。

来源: doc/release-checklist.md15-20

最低支持的 Rust 版本 (MSRV)

MSRV 作为发布流程的一部分进行跟踪和更新。在所有相关文档中检查和更新此版本非常重要。

来源: doc/release-checklist.md7-11

持续集成

CI 流水线在发布流程中起着至关重要的作用。

  1. 在发布前验证所有更改。
  2. 在推送标签时构建二进制构件。
  3. 将这些构件部署到 GitHub 发布。

来源: doc/release-checklist.md38-39 doc/release-checklist.md48-57

维护者的最佳实践

  1. 向 crates.io 发布时,始终从干净的仓库进行操作。
  2. 在进行每一步之前,等待 CI 完成。
  3. 在宣布发布之前,请验证二进制文件部署是否正常工作。
  4. 确保所有文档都已更新以反映新版本。
  5. 发布后立即为下一个发布周期准备 CHANGELOG。

来源: doc/release-checklist.md36-84