配置 Agent 要求
Agent 要求 是指定哪些 agent 能运行您的构建配置的条件。 任何代理需求都是 参数运算符 [值]
表达式,其中:
形参
是预定义的或自定义(用户定义的)构建参数。 例如,teamcity.agent.jvm.os.name
参数用于报告 agent 上安装的是哪种操作系统。 请注意,由于需求应确定代理是否可以为此特定的构建配置运行构建,因此您应只使用取决于代理的参数值可能有所不同的参数。 例如,teamcity.serverUrl
参数对任何代理报告相同的值,对于定义代理需求无用。运算符
是一个关键词,定义了如何处理值
部分。 您可以在 "等于"、"开始于"、"不超过" 和其他运算符之间进行选择。 请参阅此文章以获取完整列表:需求条件。值
与参数报告的实际值进行比较。 如果符合指定的条件,则整个表达式返回true
,这意味着该代理与(能够运行构建的)这种特定配置是兼容的。 某些运算符不需要值,例如exists
运算符检查参数值是否不是null 比较
。匹配项
和不匹配
运算符允许您使用正则表达式来比较值。
构建步骤需求
为确保您的构建永远不会被分配给无法运行它的代理,TeamCity 分析所有构建配置,并列出不适合配置的构建例程的代理作为不兼容的。
例如,如果您的步骤之一 在容器内运行,TeamCity 将会通过 container.agent 存在
要求,过滤掉那些未安装 Docker 或 Podman 的代理。 或者,如果您的步骤之一引用了构建参数(例如,一个 命令行 脚本打印 %my.custom.param%
的值),TeamCity 则使用相同的 exists
操作符来识别未报告此参数的代理。
如何创建自定义的显式需求
您可以在 TeamCity UI 和 Kotlin DSL 两者中添加自定义代理要求。
要临时禁用或永久移除一个要求,点击Edit旁边的下拉菜单按钮。 请注意,隐式要求不能被移除或禁用,因为它们直接是由这个配置中进行的构建行为所需要的。 将新的表达式添加到您的构建配置的 object MyBuildConfig : BuildType({
requirements {
exists("DotNetCoreSDK5.0_Path")
startsWith("teamcity.agent.jvm.os.name", "Windows")
}
}) |
---|
继承需求
如果在 Build Configuration Template(构建配置模板) 中声明了代理需求,那么基于此模板的所有配置也会同样受到该需求的影响。 这些配置的 Agent 要求 页面将这些要求标记为“继承”。
项目管理员可以编辑、禁用和移除继承的需求,除非它们是 强制性设置模板的一部分。
结合条件
当定义了多个要求时,它们会被隐式地通过布尔值 AND 连接起来。 例如,以下一组条件要求同时存在 env.JDK_17_0
参数和 env.JDK_21_0
参数:
目前没有可用的机制来用布尔 OR 将需求连接起来。