5

我在 TeamCity 中 设置了顶级项目A。

项目A有一个名为A1的构建配置。

项目BA的子项目。

项目B有一个名为B1的构建配置。

在这个构建配置中,我定义了两个参数:

  • env.param1 = "ABCDE"
  • env.param2 = %param1%

然后,从项目B的构建配置(B1)中,我提取了一个元运行器并将其附加到B的父项目A

但是,当我尝试在项目A的构建配置(A1)中使用元运行器时,此构建将无法运行;它抱怨env.param1没有定义。

当我查看构建步骤 ( A1 ) 或元运行器的定义时,我可以清楚地看到env.param1是在其中定义的。但是在项目A的构建配置(A1)参数页面上,它将env.param1列为“”。

我认为元运行器或多或少地封装了其中定义的所有内容,因此可以在您附加它的任何地方使用它。从文档

基本上,元运行器是来自一个构建配置的一组构建步骤,您可以在另一个构建配置中重用它们;它是一个包含构建步骤、要求和参数的 xml 定义,您可以在其他构建配置的 xml 定义中使用这些定义。TeamCity 允许使用 Web UI 提取元运行器。

[剪辑]

单击“提取”按钮后,TeamCity 将获取此构建配置中所有构建步骤和参数的定义,并从中创建一个构建运行器。

我究竟做错了什么?

4

1 回答 1

1

metarunner 正在查看项目 A 中的 env.param1,即“”。为避免这种情况,请在 metarunner 中使用特定于 metarunner 的变量,并在 metarunner 的构建步骤中定义它。这样,就不会有任何混乱。

如果你想自动参数化,你可以在构建步骤中设置 metarunner 特定的变量来引用项目 A 的 %env.param1%。

于 2018-08-22T23:42:05.563 回答