本文档概述了 Tauri 项目的发布流程,解释了如何跟踪更改、更新版本以及将包发布到各自的注册表中。该流程在很大程度上通过 GitHub Actions 工作流实现自动化,并使用 covector 管理 Tauri 生态系统中的多个包的版本控制和发布。
Tauri 遵循结构化的发布流程,该流程仔细跟踪具有复杂相互依赖关系之多个包的更改。该流程旨在跨相关包维护版本一致性,并确保包按正确的顺序发布。
来源:.github/workflows/covector-version-or-publish.yml1-148 .changes/config.json1-231
Tauri 使用变更文件系统来跟踪将在下一次发布中包含的更改。此系统由一个名为 covector 的工具进行管理。
变更文件存储在 .changes 目录中,格式如下:
.changes/config.json 文件定义了:
当更改推送到 dev 分支时,会触发版本更新。该过程使用 covector 工具分析变更文件并确定需要更新的版本。
在版本更新过程中:
来源:.github/workflows/covector-version-or-publish.yml57-121
Tauri 的发布流程会管理包之间的依赖关系,以确保版本一致性。在 .changes/config.json 中定义的包依赖关系图确保当一个包更新时,所有依赖的包也会被更新。
来源:.changes/config.json129-229
发布流程会在没有变更文件时触发,或者在版本更新 PR 被合并后触发。
在发布阶段:
来源:.github/workflows/covector-version-or-publish.yml95-139 .changes/config.json14-128
CLI 包需要额外的步骤来构建特定于平台的二进制文件。两个独立的工作流处理此问题:
此工作流:
来源:.github/workflows/publish-cli-js.yml1-400
此工作流:
来源:.github/workflows/publish-cli-rs.yml1-96
发布流程可以通过两种方式触发:
dev 分支时,covector 工作流会自动运行。自动化流程可确保发布始终如一地进行,并且仅在有实际更改需要发布时才进行。
来源:.github/workflows/covector-version-or-publish.yml7-11
在发布流程继续之前,必须通过一套全面的测试。
这些测试有助于确保只发布高质量、安全的代码。
来源:.github/workflows/covector-version-or-publish.yml13-56 .github/workflows/test-cli-js.yml1-63
成功发布后,会采取一些额外的操作:
来源:.github/workflows/covector-version-or-publish.yml123-147
Tauri 的发布流程是一个复杂的自动化系统,它管理多个包之间复杂的相互依赖关系。它确保:
此流程最大限度地减少了手动干预,同时保持了高标准的发布质量。