app-starlock/VERSION.md
2024-05-18 09:37:50 +08:00

3.2 KiB
Executable File
Raw Permalink Blame History

项目版本管理

在项目进行过程中,我们遇到过以下场景:

  1. 对用户说“你用的包我们没有了,代码已经向前发展了,我们无法提供相同的安装包/另一个平台的该版本安装包”
  2. 对用户说“功能有问题?我也不清楚你是不是版本太老了,要不你直接升级到最新版吧“
  3. ”什么X.X.X版本有XX问题我不知道这个问题好像已经修复了啊要不你升级最新版试试“
  4. 用户并不是总能升级到最新版、例如新版本引入了某个功能带来新的问题,我们需要在特定版本修复特定问题。
  5. 例如对于应用商店当我提交审核1.1.1版本那么我将会根据反馈修复问题而此时主分支已经进化到1.2.0版本引入了更多的功能我现在并不像将1.2的新增功能提交测试我需要继续在1.0版本修复一些问题。(别想着这是应用商店,用户也是如此,例如你交付给某个客户进行测试,双方都不会想在测试-修复的循环中不断引入新功能【新问题】)

为了避免以上情况,我们必须对项目进行规范的版本管理。 具体来说,任何和内部协同,外部交付的构建,必须遵循此文档的规范。

分支管理

目前没有进行工作流分支管理,所有的开发都在master分支上进行。

在构建时需要拉出新分支来区分构建的版本的代码。具体来讲,当你现在需要构建,你需要进行如下操作:

  1. 按规则修改pubspec.yaml中的版本号并添加对应的版本说明记录
  2. 在master分支提交并push代码
  3. 在master拉出新分支例如build-1.0.18+2024032002,其中的1.0.18+2024032002是你刚新增的版本
  4. 在新分支构建
  5. 如果构建过程需要修改代码提交在build-xx分支而不是master分支
  6. 构建完成后如有必要可以合并到master分支保留build-xx分支已备后续可以再次构建此版本的其他构建平台或构建方式
  7. 构建完成后记得切换回master分支

版本号

项目版本号遵循flutter规范major.minor.patch+build,例如1.0.0+1。 其中的构建号必须在每一次构建都进行递增,具体的规则是年月日二位自增,例如2024032701

前面的版本号是由项目的业务需求决定的,例如1.0.01.0.11.1.0等。

具体来说,major是大版本号,minor是小版本号,patch是修订号

其中大版本号必须是完全不兼容的更新才可以使用,脱胎换骨,浴火重生级别的。

小版本号是功能差异,不一定完全兼容,用户可能需要升级否则无法使用某个功能, 例如增加了一个新功能,或者修改了一个已有的功能。

修订号是修复bug或者优化性能或者修改了一些细节但是不影响用户使用的。

构建物文件名

无论分发到什么渠道,通过自行发布页面或者通过即时通讯工具传递安装包,都必须使用规范的文件名以避免混淆。

文件名的格式为:app-sky-64-release-VersionCode.apk

其中sky是渠道名,64是CPU架构release是构建类型,VersionCode是版本号。