TeamCity On-Premises 2026.2 Help

配置 Schedule Triggers

schedule trigger允许定义一个时间表,用于自动运行给定配置中的构建。 多个调度触发器可以添加到单个构建配置中。

当前 构建计划 部分的 项目设置显示了已配置的构建时间。

触发条件

这一部分描述了计划触发器的参数,例如定时和 VCS 规则。

日期和时间

您可以安排一个重复的构建,或者为其设置特定的日期和时间。

除了在特定时区的指定时间触发 每日 或 每周 构建之外,您还可以使用类似 cron的表达式指定高级时间设置。 这种格式提供了更灵活的调度选项。

TeamCity 使用 Quartz 处理 cron 表达式。 请查看 这些示例 ,或者考虑使用 CronMaker 实用工具,基于 Quartz cron 格式生成表达式。

版本控制系统更改

您可以通过启用 仅在存在待处理更改时触发 选项,限制计划触发器仅在您的版本控制中存在待处理更改时启动构建。 此选项仅考虑新检测到的待处理更改:如果在创建触发器之前已存在待处理更改,则不会触发构建。

如果在构建配置的版本控制设置中启用了 "显示快照依赖项的更改 " 选项,调度触发器也将 考虑来自依赖配置的更改)。

VCS 触发规则

如果未指定触发规则,那么一旦检测到构建配置的任何更改,就会触发构建。 您可以通过更改 VCS 根设置并指定 checkout rules 来控制检测到的更改。

为限制触发构建的更改,请使用 VCS 触发规则。 您可以在文本区域中手动添加这些规则(每行一个),或者使用 添加新规则 按钮生成它们(如有必要,请向下滚动以显示按钮)。

添加触发规则

每条规则要么是"包含"(以 + 开始),要么是"排除"(以 - 开始)。

一般语法

单个规则的一般语法是:

+|-[:[user=VCS_username;][root=VCS_root_id;][comment=VCS_comment_regexp]]:Ant_like_wildcard

where:

  • Ant_like_wildcard :用来匹配已更改文件路径的 通配符。 仅支持 * 和 ** 模式,不支持 ? 模式 非。 规则中的文件路径可以是相对路径(不以 / 或 \ 开头),以匹配代理上的结果路径,或者是绝对路径(以 / 开头),以匹配相对于 VCS 根的 VCS 路径。 对于更改中的每个文件,都会找到最具体的规则(匹配最长文件路径的规则)。 如果有至少一个文件与“include”规则匹配,或者文件没有与“exclude”规则匹配,那么将触发构建。

  • VCS_username :如果指定,将规则限制为只适用于由具有相应的 VCS 用户名 的用户所做的更改。

  • VCS_root_id :如果指定了,该规则将仅限于对应的 VCS 根目录的更改。

  • VCS_comment_regexp :如果指定,则只限于在 VCS 注释中包含指定文本的更改。 请使用 Java 正则表达式 模式匹配注释中的文本(请参见下面的示例)。 如果注释文本包含匹配的文本部分,该规则则匹配;要匹配整个文本,请包含 ^ 和 $ 特殊字符。

触发规则示例

示例

描述

+:.

包含所有文件

-:**.html

排除所有 .html 文件,以防触发构建。

-":user=techwriter;root=InternalSVN:/misc/doc/*.xml

排除由 .xml 文件触发的构建,该文件由 VCS 用户techwriter 检入到名为 内部 SVN 的 VCS 根目录(如在 VCS 设置中定义)的 misc/doc 目录。 请注意,路径是绝对的(以 / 开始),因此文件路径是从 VCS 根开始匹配的。

-:lib/**

阻止由于对构建源代码的 lib 目录(如代理上所显示)的更新而触发的构建。 请注意,路径是相对的,因此,所有放入目录中的文件(通过处理版本控制根 checkout rules )都不会触发构建。

-:comment=minor:**

如果更改检查包含注释中的单词 不严重 ,则阻止构建触发。

-:comment=^oops$:**

如果注释仅由 糟糕 单词组成(根据 Java 正则表达式 的原则, ^ 和 $ 代表了模式中的字符串开始和结束),则不触发。

+":comment=#teamcity:**

如果评论包含 #teamCity 关键词,便会触发构建。

+":comment=(?s)#teamcity.*#major:**

如果评论中同时包含了 #teamCity 和 #重大 关键词,便会触发构建。 在这里, (?s) 是一个 DOTALL 模式 ,它使得字符 . 可以匹配任何字符,包括行终止符,并允许检查多行注释。

例如,以下的注释将会触发构建:

#teamcity the first line #major the second line

构建更改

计划触发器可以监视任何指定的构建配置中的构建,并且只有在被监视的构建自上次触发以来发生变化时,才会触发构建。 您可以选择要查看的构建:

  • 最后完成的构建

  • 上次成功构建

  • 最后一个 固定构建

  • 最后完成的带有指定 build tag 的构建

如果触发器检测到一个新的构建满足被监视配置中所选的特性,它会在自己的配置中排队一个新的构建。

触发器只观察目标分支中的常规(非 个人 或 历史 )构建。 如果被监视的配置在多个分支中完成了构建,则触发器设置还包括 构建分支过滤器 字段,允许您仅监视特定分支中的构建。 此设置最初设置为 +:<default> ,这意味着触发器将仅监视被监视配置的默认分支中的构建。

如果触发的构建依赖于通过快照或工件依赖的监视构建,选择 "Promote watched build" 选项,以便 TeamCity 可以自动将检测到的构建 promote 为触发的构建。 否则,构建将如常触发,并与检测到的构建无关。

其他选项

强制进行清理检出

启用 在构建之前删除检出目录中的所有文件 选项,以强制 TeamCity 在运行构建之前清理检出目录中的所有文件。
此选项也可应用于快照依赖。 在这种情况下,构建链中的所有构建都将被强制使用 clean checkout。 该选项还可以重新构建所有依赖项(除非通过自定义构建对话框或计划触发器提供自定义依赖项或促进构建)。

在所有启用和兼容的代理上触发构建

使用此选项可以在所有启用并与构建配置兼容的代理上同时运行构建。 此选项在以下情况下可能很有用:

  • 为了代理维护目的运行构建(例如,您可以创建一个配置来检查代理在环境升级 / 更新后是否正常运行)

  • 在不同平台上运行构建(例如,您可以设置配置,并为其指定多个已安装不同环境的兼容构建代理)

构建队列优化设置

默认情况下,TeamCity 优化构建队列 :已排队的构建可以被已开始的构建或更近期的排队构建所替换。 您可以通过取消勾选相应的框来禁用此默认行为。

分支过滤器

默认情况下,计划触发器适用于所有分支。

在 Branch Filter 中阅读更多内容。

触发规则和分支过滤器的组合

触发规则和分支过滤器由 和 组合,这意味着仅在 当两个条件都满足时 时触发构建。

例如,如果您在触发规则字段中指定了一段评论文字,并提供了分支规格,那么构建只有在提交包含指定文字且同时在分支过滤器匹配的分支中时才会被触发。

触发构建自定义

触发器设置的 构建自定义 选项卡允许配置由此触发器启动的构建的自定义参数。 与 Run Custom Build 对话框类似,它让您可以覆盖 构建参数 的值,并选择是否在构建前清理 检出目录。

在此选项卡中,您可以自定义当前 构建配置中使用的任何 参数的值。 或者,您可以添加一个新的参数,它将仅在由此触发器启动的构建中可用。 如果当前构建对其他构建有 快照依赖 ,这样一个参数也可以用来 覆盖依赖构建配置的某个属性 :使用这个 reverse.dep.<dependencyBuildID>.<property> 语法。

请注意,如果您在触发器中重新定义了构建参数,然后在 参数 中删除了原始参数,其重新定义的值将被转换为触发器自己的纯文本参数。 在定制安全值时,这一点至关重要,因为只有与 "Password" 类型 一起存储时,它们才会被隐藏,如果转化为纯文本,它们将变得可读。

TeamCity 允许以多种方式解决类似的任务,在某些情况下,仍然优先创建不同的构建配置。 例如,如果在同一配置中有太多自定义运行,那么 TeamCity 预测每次构建的确切持续时间可能会更加困难。 如果您需要触发带有大量不同参数的构建,我们建议您创建一个 构建配置模板 ,并将其用作各种配置的蓝图,每种配置都有其自己的参数。

2026年 9月 11日