代理要求
代理要求 是特殊的条件,定义了一个 构建配置 是否可以在特定的 构建代理 上运行。 与通过 代理池s 进行分组一起,他们为您提供了灵活的控制,以便将构建分发到代理。
要为指定的构建配置创建一个明确的代理需求,请转到 构建配置设置 | 代理要求,然后点击 添加新要求。 每个需求代表某个参数的条件规则。 当您输入参数名称或值时,TeamCity 将为您显示相关建议。
要临时禁用或删除一个需求,使用其上下文菜单。
基于环境变量和属性的代理要求
当构建代理在 TeamCity 服务器上注册时,它会提供关于其配置的信息,包括其环境变量、系统属性和在 buildAgent.properties
文件中指定的附加设置。 您可以使用这些参数来定义 代理要求。
例如,如果当前的构建配置只能在 Windows 代理上运行,请添加以下规则:
参数名称:
teamcity.agent.jvm.os.name
条件:
equals
值:
Windows
在此需求创建之后,TeamCity 将检查所有活动代理的 jvm.os.name
系统属性的值。 如果它不等于 Windows
对于特定的代理,这个代理将被标记为与当前构建配置不兼容。
您也可以使用 正则表达式 来匹配参数值。 例如,如果您希望通过匹配代理名称的各个部分来选择代理,添加以下规则:
参数名称:
teamcity.agent.name
条件:
匹配项
值:
(macos|linux|win)-(m|l|xl).*
兼容和不兼容的代理都列在 构建配置设置 | 代理要求 中。
您可以为单个参数添加多个代理需求。 只有满足所有这些要求,代理才会被视为兼容。
隐式要求
任何引用(一个被 %
字符围住的名称)对构建中的未知参数都被认为是一个隐式需求。 构建只有在以下情况下才会在代理上运行:
代理提供了这个参数,或者
参数在构建配置(或项目)级别上定义。
构建配置的值的优先级高于在代理上定义的值。
例如,如果您将构建运行程序参数定义为对另一属性的引用: %env.JDK_16%/lib/*.jar
,这将隐式地为引用的属性添加一个代理需求:也就是, env.JDK_16
必须被定义。 要在代理上定义此类属性,您可以:
在
buildAgent.properties
文件中指定它们。在构建代理上设置 环境变量
JDK_16
。在构建配置的 Parameters (参数)页面或 Project Settings (项目设置)中指定值。 所有构建代理将使用属性的相同值。