跨项目增加内部版本号,但统一跨配置
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)
是否有任何变通方法可以实现我正在寻找的目标?
这是我当前配置的示例。
以下是我会尝试的方法:
- 创建另一个单独的构建配置,仅提供您希望所有其他人使用的构建号。
- 使该内部版本号配置成为所有其他配置的快照依赖项。
- 在每个内部版本配置的常规设置中,将内部版本号设置为来自内部版本号配置的值。如果它被命名为
BuildNumberGenerator
,那么您将在 Build number format: 字段中使用 %dep.BuildNumberGenerator.system.build.number%
。
编辑: 刚刚看到您在问题中的陈述,您知道如何进行链式构建以共享内部版本号。上面的第 2 步和第 3 步就是这样。
此外,我看不出使用这种技术的 AutoIncrementer 插件的原因。
我不知道它会递增多次。需要尝试一下,看看会发生什么。您可以使用 Finish Build Trigger 来启动所有其他构建,而不是让它们成为依赖项。因此,您将启动构建根目录(可用作构建编号生成器),完成构建触发器将启动所有其他将根目录作为快照依赖项的构建。
标题可能有点含糊,但我想做的是在 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)
是否有任何变通方法可以实现我正在寻找的目标?
这是我当前配置的示例。
以下是我会尝试的方法:
- 创建另一个单独的构建配置,仅提供您希望所有其他人使用的构建号。
- 使该内部版本号配置成为所有其他配置的快照依赖项。
- 在每个内部版本配置的常规设置中,将内部版本号设置为来自内部版本号配置的值。如果它被命名为
BuildNumberGenerator
,那么您将在 Build number format: 字段中使用%dep.BuildNumberGenerator.system.build.number%
。
编辑: 刚刚看到您在问题中的陈述,您知道如何进行链式构建以共享内部版本号。上面的第 2 步和第 3 步就是这样。
此外,我看不出使用这种技术的 AutoIncrementer 插件的原因。
我不知道它会递增多次。需要尝试一下,看看会发生什么。您可以使用 Finish Build Trigger 来启动所有其他构建,而不是让它们成为依赖项。因此,您将启动构建根目录(可用作构建编号生成器),完成构建触发器将启动所有其他将根目录作为快照依赖项的构建。