TeamCity On-Premises 2024.03 Help

配置 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 两者中添加自定义代理要求。

  1. 请导航至构建配置设置(管理 | <您的配置>),然后切换到 代理要求 标签。 这个页面显示哪些代理当前有资格基于其执行的建筑常规来运行您的构建配置。

    代理要求标签页
  2. 点击 添加新的需求 按钮。

  3. 选择一个参数,一个条件,并输入一个值来创建新的表达式。 由于 TeamCity 扫描了代理报告的参数,因此在您输入参数名称和值时,它会显示出建议。

    添加新的需求
  4. 点击 Save。 您的兼容和不兼容代理的列表将会进行更新。 如果 TeamCity 无法找到满足您的新条件的代理,相应的警告将显示在需求旁边。 运行此类构建配置将使构建在队列中等待,状态显示为“没有空闲的兼容代理可以运行此构建”。

    没有兼容的代理

要临时禁用或永久移除一个要求,点击Edit旁边的下拉菜单按钮。 请注意,隐式要求不能被移除或禁用,因为它们直接是由这个配置中进行的构建行为所需要的。

移除或禁用需求

将新的表达式添加到您的构建配置的 要求 块中。

object MyBuildConfig : BuildType({ requirements { exists("DotNetCoreSDK5.0_Path") startsWith("teamcity.agent.jvm.os.name", "Windows") } })

参见:需求 | Kotlin DSL 文档

继承需求

如果在 Build Configuration Template(构建配置模板) 中声明了代理需求,那么基于此模板的所有配置也会同样受到该需求的影响。 这些配置的 Agent 要求 页面将这些要求标记为“继承”。

继承需求

项目管理员可以编辑、禁用和移除继承的需求,除非它们是 强制性设置模板的一部分。

结合条件

当定义了多个要求时,它们会被隐式地通过布尔值 AND 连接起来。 例如,以下一组条件要求同时存在 env.JDK_17_0 参数和 env.JDK_21_0 参数:

requirements { exists("env.JDK_17_0") exists("env.JDK_21_0") }

目前没有可用的机制来用布尔 OR 将需求连接起来。

最后修改日期: 16日 7月 2024年