我有一个包含多个子项目的TeamCity项目。如何在不事先硬编码代理要求的情况下使子项目在特定代理上运行?我想做类似这样的事情.. 这样,我就不必为每个代理复制子项目,而只需拥有一个项目并在执行时在某些配置中指定代理名称即可。使用TeamCity 9。
您可以创建代理池,并将特定代理分配给项目。要做到这一点,请单击顶部的“代理”链接。基本上,您可以定义特定项目的目标只能在特定代理上运行。编辑 如果您想在运行时定义它,您必须返回到在目标中定义代理需求。您在第一个目标中设置代理名称的参数。在所有后续目标中,您可以创建构建链并从一个目标传递参数到另一个目标。在目标的定义中,您设置了一个代理条件,表示代理名称与您传递给自定义变量的任何值匹配。在第一个目标中,您可以有一个提示/下拉列表,并为完整的构建链初始化一个基于代理的运行。或者,在每次运行之前,您可以从项目池中分配和取消分配代理,然后运行目标。例如,在代理池中,您可以将项目A设置为仅在代理1上构建。运行完成后,您将项目A更改为仅在target2上运行。我建议选择第一个选项而不是第二个。
这个插件可能可以满足你的需求。你可以为同一个参数定义一系列不同的值,它将在所有值上运行。这些值可以是代理名称、环境变量、node.js 版本或其他任何内容。 https://github.com/presidentio/teamcity-matrix-build-plugin