菜单

开发工作流

相关源文件

本文档记录了 Tauri 项目的开发工作流程,包括贡献流程、CI/CD 流水线、测试策略和发布流程。它全面概述了 Tauri 生态系统内的开发是如何进行的。

有关构建和打包 Tauri 应用程序的信息,请参阅 Build and Bundling System。有关 API 文档,请参阅 JavaScript API

贡献到 Tauri

Tauri 项目遵循结构化的贡献流程,以确保代码质量和一致性。

拉取请求流程

为 Tauri 做出贡献始于创建符合以下指南的拉取请求

  1. 使用约定性提交格式的描述性标题(例如,fix(windows): fix race condition in event loop
  2. 在 PR 描述中引用相关问题
  3. 包含用于版本更新的更改文件
  4. 确保所有提交都已签名
  5. 通过所有测试和 linting 检查

对于非琐碎的更改,请考虑先提交一个草稿 PR 以获取反馈,然后再最终确定。

来源:.github/PULL_REQUEST_TEMPLATE.md1-21

变更管理系统

Tauri 使用更改文件系统(由 Covector 驱动)来跟踪更改和自动化版本更新。当进行需要版本更新的更改时,请将更改文件添加到 .changes 目录。

更改文件控制版本如何更新。该系统识别以下更改类型

更改标签描述版本影响
feat新功能次要版本升级
enhance增强功能次要版本升级
bugBug 修复补丁版本升级
perf性能改进补丁版本升级
changes已更改内容补丁版本升级
sec安全修复补丁版本升级
deps依赖项补丁版本升级
breaking破坏性变更主要版本升级

来源:.changes/config.json3-12

CI/CD 流水线

Tauri 项目采用了一个完整的 CI/CD 流水线,该流水线使用 GitHub Actions 实现。

GitHub Actions 工作流

下图说明了 Tauri 项目中的主要 CI/CD 工作流程

来源:.github/workflows/covector-version-or-publish.yml5-147 .github/workflows/test-core.yml5-105 .github/workflows/lint-js.yml5-41 .github/workflows/fmt.yml5-52 .github/workflows/check-generated-files.yml5-83

测试策略

Tauri 实现了跨不同平台的多个层级的测试,以确保稳定性

  1. 单元测试:孤立地测试单个组件
  2. 集成测试:测试组件协同工作
  3. 平台特定测试:在 Windows、macOS、Linux、Android 和 iOS 上进行测试
  4. 性能测试:关键性能路径的基准测试

测试会在拉取请求和合并到 dev 分支时自动运行,针对各种平台和功能组合使用不同的矩阵配置。

来源:.github/workflows/test-core.yml30-104 .github/workflows/test-android.yml5-107 .github/workflows/test-cli-js.yml5-63

发布流程

Tauri 的发布流程在很大程度上通过 Covector 和 GitHub Actions 实现自动化。

使用 Covector 进行版本管理

Covector 根据更改文件管理版本流程

来源:.github/workflows/covector-version-or-publish.yml57-147 .changes/config.json13-229

软件包依赖与发布顺序

Tauri 拥有复杂的依赖图,它决定了软件包的发布顺序。下图说明了这些依赖关系

来源:.changes/config.json129-229

发布流程

发布过程完全通过 GitHub Actions 实现自动化。工作流程如下

  1. 当没有更改文件存在时,covector-version-or-publish.yml 工作流程会发布软件包
  2. 软件包按依赖顺序发布(无依赖的软件包先发布)
  3. 对于每个软件包,都会执行发布前检查,例如审计
  4. 成功发布后,工作流程会创建一个 GitHub release
  5. CLI 工具的二进制工件会被构建并附加到 release 中

对于 JavaScript CLI,还会执行额外的步骤来构建特定平台的二进制文件(用于 Windows、macOS、Linux 和各种架构)。

来源:.github/workflows/covector-version-or-publish.yml95-147 .github/workflows/publish-cli-js.yml5-400 .github/workflows/publish-cli-rs.yml5-96

开发工具与实践

代码质量检查

Tauri 项目采用了多种自动化检查来维护代码质量

检查类型工具目的
格式化rustfmt, Prettier, taplo确保代码风格一致
代码 LintingESLint, Clippy捕获常见错误和反模式
类型检查TypeScript, Rust 编译器确保类型安全
安全cargo audit, npm audit检查已知漏洞
依赖项cargo-udeps检测未使用的依赖项

来源:.github/workflows/fmt.yml5-52 .github/workflows/lint-js.yml5-41 .github/workflows/udeps.yml5-155 .github/workflows/audit.yml5-42

基准测试

Tauri 包含一个基准测试系统,用于跟踪随时间变化的性能指标

来源:.github/workflows/bench.yml5-98

跨平台开发

Tauri 开发需要在多个平台上进行测试。该项目使用 CI 在以下平台进行测试

  1. Windows (x86_64, aarch64)
  2. macOS (x86_64, aarch64)
  3. Linux (x86_64, aarch64, armv7, riscv64)
  4. Android
  5. iOS (即将推出)

CI 矩阵确保所有支持的平台和架构都经过测试。对于移动开发,专门的工作流程会测试 Android 和 iOS 特定的功能。

来源:.github/workflows/test-core.yml30-104 .github/workflows/test-android.yml5-107 .github/workflows/publish-cli-js.yml24-96

Tauri 开发入门

开始为 Tauri 贡献

  1. Fork 存储库
  2. 在本地克隆你的 fork
  3. 设置开发环境
    • 安装 Rust (稳定工具链)
    • 安装 Node.js 和 pnpm
    • 安装特定于平台的依赖项(请参阅平台设置指南)
  4. 运行 pnpm i --frozen-lockfile 来安装依赖项
  5. 使用 cargo test 运行测试以确保您的设置正常工作
  6. 进行更改并创建拉取请求

有关贡献 Tauri 的更详细信息,请参阅 Contributing to Tauri

来源:.github/PULL_REQUEST_TEMPLATE.md1-21