跨项目增加内部版本号,但统一跨配置

Increment build number across projects but unify across configurations

标题可能有点含糊,但我想做的是在 TeamCity 中构建一个 SOA 应用程序。

基本上我有一个名为 Continuous Build 的项目。在该项目中有 6 个构建配置,每个服务一个。然后,我有另一个名为 "Alpha" 的项目和第三个名为 "Beta".

的项目

现在我知道我可以使用 Chained builds 来共享内部版本号,但我不能用这种方法做的是在 "Continuous"、"Alpha" 之间增加内部版本号和 "Beta",同时在每个构建配置中保持统一的数字。

这里是希望一个例子来解释我正在尝试做的事情。

- Continuous Build (project)
    - SVC 1 (build number 1.2.34)
    - SVC 2 (build number 1.2.34)
    - SVC 3 (build number 1.2.34)
    - SVC 4 (build number 1.2.34)
    - SVC 5 (build number 1.2.34)
    - SVC 6 (build number 1.2.34)
 - Alpha Build (project)
    - SVC 1 (build number 1.2.30)
    - SVC 2 (build number 1.2.30)
    - SVC 3 (build number 1.2.30)
    - SVC 4 (build number 1.2.30)
    - SVC 5 (build number 1.2.30)
    - SVC 6 (build number 1.2.30)
- Beta Build (project)
    - SVC 1 (build number 1.1.0)
    - SVC 2 (build number 1.1.0)
    - SVC 3 (build number 1.1.0)
    - SVC 4 (build number 1.1.0)
    - SVC 5 (build number 1.1.0)
    - SVC 6 (build number 1.1.0)

无论哪个项目选择下一个构建,下一个构建都将增加到 1.2.35

我目前正在使用 AutoIncrementer,但后来我得到了以下结果(这并不理想)

- Continuous Build (project)
    - SVC 1 (build number 1.2.34)
    - SVC 2 (build number 1.2.35)
    - SVC 3 (build number 1.2.36)
    - SVC 4 (build number 1.2.37)
    - SVC 5 (build number 1.2.38)
    - SVC 6 (build number 1.2.39)

是否有任何变通方法可以实现我正在寻找的目标?

这是我当前配置的示例。

以下是我会尝试的方法:

  1. 创建另一个单独的构建配置,仅提供您希望所有其他人使用的构建号。
  2. 使该内部版本号配置成为所有其他配置的快照依赖项。
  3. 在每个内部版本配置的常规设置中,将内部版本号设置为来自内部版本号配置的值。如果它被命名为 BuildNumberGenerator,那么您将在 Build number format: 字段中使用 %dep.BuildNumberGenerator.system.build.number%

编辑: 刚刚看到您在问题中的陈述,您知道如何进行链式构建以共享内部版本号。上面的第 2 步和第 3 步就是这样。

此外,我看不出使用这种技术的 AutoIncrementer 插件的原因。

我不知道它会递增多次。需要尝试一下,看看会发生什么。您可以使用 Finish Build Trigger 来启动所有其他构建,而不是让它们成为依赖项。因此,您将启动构建根目录(可用作构建编号生成器),完成构建触发器将启动所有其他将根目录作为快照依赖项的构建。