server/priv/docs/zh_Hans/contributors/releases.md
Tuist 采用持续发布系统,每当有意义的变更合并到主分支时,系统就会自动发布新版本。这种方法可确保改进内容迅速送达用户,而无需维护人员进行人工干预。
我们持续发布三个主要组件:
每个组件都有自己的发布管道,每次推送到主分支时都会自动运行。
我们使用 Conventional Commits 来构建提交信息。这样,我们的工具就能理解变更的性质,确定版本升级,并生成适当的变更日志。
格式:类型(范围):描述
| 类型 | 描述 | 版本影响 | 示例 |
|---|---|---|---|
绝技 | 新功能或能力 | 小版本升级(x.Y.z) | feature(cli):添加对 Swift 6 的支持 |
定格 | 错误修复 | 补丁版本的提升(x.y.Z) | fix(app): 解决打开项目时崩溃的问题 |
文档 | 文件更改 | 未发布 | 文档:更新安装指南 |
风格 | 代码样式更改 | 未发布 | style:用 swiftformat 格式化代码 |
重构 | 代码重构 | 未发布 | 重构(服务器):简化认证逻辑 |
敷衍 | 性能改进 | 补丁版本提升 | perf(cli): 优化依赖关系解析 |
测试 | 测试增加/更改 | 未发布 | 测试:为缓存添加单元测试 |
苦差事 | 维护任务 | 未发布 | 苦差事:更新依赖关系 |
ci | CI/CD 变化 | 未发布 | CI:为发布添加工作流程 |
破坏性修改会触发主要版本升级(X.0.0),应在提交正文中注明:
feat(cli): change default cache location
BREAKING CHANGE: The cache is now stored in ~/.tuist/cache instead of .tuist-cache.
Users will need to clear their old cache directory.
每个组件都使用 git cliff 来运行:
检测到可释放更改时:
每个组件只有在有相关变更时才会发布:
(cli) 或无范围(app) 的提交 范围(服务器) 范围的提交由于提交信息会直接影响发布说明,因此编写清晰、描述性强的信息非常重要:
fix(cli):解决构建缓存问题 (#1234)对于破坏性更改,请在提交正文中包含BREAKING CHANGE: :
feat(cli): change cache directory structure
BREAKING CHANGE: Cache files are now stored in a new directory structure.
Users need to clear their cache after updating.
发布工作流程在
.github/workflows/cli-release.yml - CLI 版本.github/workflows/app-release.yml - 应用程序版本.github/workflows/server-release.yml - 服务器版本每个工作流程:
您可以通过以下方式监测发布情况:
这种持续发布方法提供了
如果释放失败:
用于需要立即发布的紧急修复:
虽然 CLI 和服务器遵循上述持续发布流程,但iOS 应用程序 是一个例外,因为苹果公司的 App Store 审核流程是这样的:
iOS 应用程序仍然遵循相同的提交约定,并使用 git cliff 生成更新日志,但实际向用户发布的频率较低,而且是手动发布。