如何在TeamCity中使用不同的预定义参数运行相同的构建

时间:2017-07-14 09:55:46

标签: continuous-integration teamcity build-process

我尝试改进构建过程,并使用2-3个预定义参数在一个构建上运行。

描述:我们使用参数C1,C2,C3和相关构建步骤B1,B2,B3构建配置。它们相互连接C1-B1,C2-B2,C3-B3。在这个方案中,一切正常,我传递了这里提到的参数 - How to pass Arguments between build configuration steps in team city?

但我有点担心,因为B1,B2,B3是完全相互复制的,我想改进它。只有一个问题我找不到任何机制来传递来自不同配置的参数。如果我使用%dep.机制,我只能使用一个配置中的参数。

UPD :Currect scheme

+---+   +---+   +---+
|   |   |   |   |   |
| C1|   | C2|   | C3|
|   |   |   |   |   |
+-+-+   +-+-+   +-+-+
  |       |       |
  |       |       |
+-v-+   +-v-+   +-v-+
|   |   |   |   |   |
| B1|   | B2|   | B3|
|   |   |   |   |   |
+---+   +---+   +---+

所需方案:

+---+   +---+   +---+
|   |   |   |   |   |
| C1|   | C2|   | C3|
|   |   |   |   |   |
+-+-+   +-+-+   +-+-+
  |       |       |
  |       |       |
  |     +-v--+    |
  |     |    |    |
  |     |    |    |
  +-----> B1 <----+
        |    |
        +----+

C1,C2,C3设置配置参数 B1仅包含构建步骤,如clean, build, dist

有人可以帮我吗?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在您的情况下,您可以介绍TeamCity Metarunner。我们的想法是将多个构建步骤与参数组合在一起,并将它们提取为新实体,可用作构建运行程序。

有关创建metarunner的分步说明,请参阅此documentation section

答案 1 :(得分:0)

您可以在模板中定义参数,将其调用,例如external.param,并且不进行定义。

然后,在每个配置(C1,C2和C3)中定义此参数的值作为对特定依赖项的引用。

external.param = %dep.<source_cfg_id>.<source_param_name>%