如何在子项目生成的TeamCity meta runner中使用参数?

如何在子项目生成的TeamCity meta runner中使用参数?,teamcity,teamcity-8.0,Teamcity,Teamcity 8.0,我在TeamCity设立了顶级项目A 项目A有一个名为A1的生成配置 项目B是a的子项目 项目B有一个名为B1的构建配置 在这个构建配置中,我定义了两个参数: 环境参数1=“ABCDE” 环境参数2=%param1% 然后,从项目B的构建配置(B1)中,我提取一个元运行程序并将其附加到B的父项目a 但是当我尝试在项目A的构建配置(A1)中使用元运行程序时,这个构建不会运行;它抱怨未定义环境参数1 当我查看构建步骤(A1)或元运行程序的定义时,我可以清楚地看到env.param1是在中定义的。

我在TeamCity设立了顶级项目A

项目A有一个名为A1的生成配置

项目Ba的子项目

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

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

  • 环境参数1=“ABCDE”
  • 环境参数2=%param1%
然后,从项目B的构建配置(B1)中,我提取一个元运行程序并将其附加到B的父项目a

但是当我尝试在项目A的构建配置(A1)中使用元运行程序时,这个构建不会运行;它抱怨未定义环境参数1

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

我认为meta runner或多或少地封装了其中定义的所有内容,因此可以在任何附加它的地方使用它。从:

基本上,元运行程序是来自一个构建的一组构建步骤 可以在其他系统中重用的配置;这是一个xml定义 包含构建步骤、需求和参数,您可以 利用其他构建配置的xml定义。团队城市 允许使用web UI提取元运行程序

[剪报]

单击提取按钮后,TeamCity将获取 此生成配置中的所有生成步骤和参数,并创建 一个身材魁梧的跑步者


我做错了什么?

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


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

问题实际上比这更一般。似乎任何元运行程序都无权访问自身外部的生成参数。为了解决这个问题,您可以向metarunner添加参数,然后在每次使用metarunner时根据使用metarunner的构建的参数进行设置。