如何在 TeamCity 中递增两个不同的内部版本号

How to increment two different build numbers in TeamCity

在我的项目中,我有一个版本号和一个修订号。版本号采用 Julian 日期格式,并且随着一天内每次构建的修订号增加而每天增加。 例如 5 月 12 日 => 133.1、133.2 等 5 月 13 日 => 134.1、134.2 等

我可以创建两个递增的构建配置,但我不确定如何访问另一个构建配置参数。

我当前的版本格式是 %VersionJulDateBuildNum%.%build.counter%

TeamCity 会自动为您管理 AssemblyVersion 属性,但有几点需要注意:

它将完全覆盖现有值。 它将更新解决方案中的所有 AssemblyVersion,因此如果您必须在同一解决方案中保留不同的项目版本,这可能不适合您。 考虑到这些注意事项,以下是我们的设置方式:

在构建配置的常规设置中,将构建编号格式更改为 %version%。{0} 在您的构建参数中,将 %version% 定义为您的 major.minor.patch。 在构建步骤中,滚动到屏幕底部并单击添加构建功能。 Select AssemblyInfo 修补程序。确保程序集版本格式填写为 %build.number%。 就是这样。 TeamCity 会将您的所有程序集信息更新为 major.minor.patch.build,如 %version% 和构建计数器所定义,然后在构建的最后一步自动恢复这些更改。

TeamCity 没有"easy"(或内置)方法来做到这一点。

我以前见过的一种常见方法是在构建开始时有一个 Powershell(或 Bash)脚本步骤(您可以将其放在所有构建都可以继承的模板上)将从某处的文本文件中读取版本号(例如,所有构建代理都可以看到的网络共享),增加它,并更新文件。您可以使用唯一的构建配置 ID 来命名文件。

另一种更复杂但更优雅(IMO)的方法是将版本号存储为构建配置本身的参数,然后通过构建中的步骤,使用 TeamCity REST API 来用增加的值更新参数。这样您就可以使用 TeamCity 为您存储值,而不必担心网络共享、文本文件、文件锁定等问题。


与你的问题没有太大关系,但我建议你看看 SemVer 如果你还没有作为你使用的版本控制方案的替代方案,(IMO) 给你更多有价值的信息。

如果一个构建配置与另一个构建配置存在快照依赖关系,您可以使用 %dep.

引用它的参数

希望对您有所帮助