我老是忘记改bugfix版本的版本号,当我发布1.0.9的时候,可能源码里的版本号还是1.0.0
到目前为止这不是什么大问题,因为每个版本都记录在 SVN 中,我可以随时从我的 SVN 检索指定的版本。
但我知道这不好,在可预见的 future 升级旧版本时可能会出现问题。我将版本号作为参数存储在我的源代码中,我想知道是否有更好的方法来控制这个数字,特别是对于 php web 项目(我知道其他一些语言有自动版本生成,但在 php 中似乎没有?)。
您如何在您的项目中解决这个问题?有什么最佳做法吗?
使用像 TeamCity 这样的持续集成软件,并使用接受版本号作为参数的构建脚本。您的构建脚本可能只是调用一个小工具,它只执行以下操作:打开一个文件 (versioninfo.php),搜索此字符串(一些正则表达式的东西),然后用给定的参数替换它。
一些使这更容易的额外提示:分支每个即将发布的版本,我们现在有 5.0 版本(但它仍然是为了热修复目的而构建),5.1 是分支并在此时进行测试,主干包含 5.2。
每次您需要发布修补程序时,更新 TeamCity 中的版本号,以及对构建脚本的调用(这也应该在 TeamCity 中完成)。
目前我们有以下项目:
- 5.0.5 版(需要/v=5.0.5)
- 5.1 版(采用/v=5.1)
- 中继(需要/v=5.2)
将此与在您的 SQL 脚本前加上版本号和一个自动数据库生成脚本相结合,该脚本为每个版本创建一个大事务脚本(例如:'DPL_Updates_for_5.1.sql')。
当我们将一个版本投入生产时,我们从 TeamCity 的分支中获取工件,特定于该版本的数据库脚本会自动添加到 zip 文件中,我们提供该文件(加上发行说明等)到我们的应用程序管理部门。