Continuous integration 将当前版本号';发布';配置为';夜间建造';配置

Continuous integration 将当前版本号';发布';配置为';夜间建造';配置,continuous-integration,teamcity,Continuous Integration,Teamcity,我们刚刚开始使用TeamCity作为持续集成服务器。我们现在正试图解决一个问题: 我们有一个“release”配置,它的构建版本设置如下:1.0.0.{0} 我们还有一个“夜间构建”配置,构建编号为:1.0.0.0.{build.vcs.number.1} 所以前两位数字是确定的,主要+次要版本。第三个应该根据我们的流程手动设置(尽管很少)。 但正如你所看到的,最后一个随着每次“释放”而增加 问题是-我如何让TC将“发布”的当前第四位数字(或全部数字)复制到“夜间构建”的第四位数字?如果您在构建

我们刚刚开始使用TeamCity作为持续集成服务器。我们现在正试图解决一个问题:

我们有一个“release”配置,它的构建版本设置如下:1.0.0.{0} 我们还有一个“夜间构建”配置,构建编号为:1.0.0.0.{build.vcs.number.1}

所以前两位数字是确定的,主要+次要版本。第三个应该根据我们的流程手动设置(尽管很少)。 但正如你所看到的,最后一个随着每次“释放”而增加


问题是-我如何让TC将“发布”的当前第四位数字(或全部数字)复制到“夜间构建”的第四位数字?

如果您在构建脚本中知道,您可以在构建期间将其发送给team city。这是说明书。我可以想出几个从发布版本中获取版本号的策略,但没有一个是优雅的。最明显的方法是从发布版本发布一个工件,该工件基本上是一个包含版本号的文本文件,然后从构建脚本中检索该工件。

在4.5中,一种方法是

  • 让每晚都有一个释放
  • 查找版本的内部生成id
  • 在夜间使用构建编号格式,如下所示
  • %dep.releaseid.system.build.number%。{build.vcs.number.1}

    其中releaseid是您在步骤2中找到的id。这将用发行版的版本号替换整个%…%的内容


    for dependency属性解释了这一点,并向您展示了如何查找内部id。

    谢谢!这似乎是解决办法!但不知何故,如果我设置依赖项,每晚都会触发释放。这是绝对不能接受的。我已经设置了“如果有合适的版本,不要运行新版本”复选框。它不应该阻止这种情况发生吗?@arconaut:你说得对,它不应该只为夜间工作而构建发行版。他们是否使用相同的vcs根目录?您使用的是什么版本的TeamCity?我使用的是TeamCity Professional 4.5.4(build 9071)。是的,它们使用相同的vcs根目录。现在,在我看来,这是因为发行版更新了组装信息(增加了最后一位),并将其提交回vcs。所以,下一次夜间启动时,发行版至少有一个变更待定。有没有办法不启动快照依赖项?或者更好-获取一些配置的当前计数器?这似乎让事情变得棘手。你的结局很奇怪。从某种意义上讲,最后生成的版本与源代码管理中的版本不一致。它是相同的代码,但不是完全相同的版本。如果有人在生成运行时但在生成签入版本号更新之前签入新文件,会发生什么情况?看来那样你会陷入一个令人讨厌的境地。您是否只在成功构建时检查版本号更新?同意,这似乎有点奇怪。所以它可能超出了这个问题的范围。除非有人知道如何从任何其他配置获取当前生成计数器:)