配置 Schedule Triggers
schedule trigger允许定义一个时间表,用于自动运行给定配置中的构建。 多个调度触发器可以添加到单个构建配置中。
这一部分描述了计划触发器的参数,例如定时和 VCS 规则。
您可以安排一个重复的构建,或者为其设置特定的日期和时间。
除了在特定时区的指定时间触发 每日 或 每周 构建之外,您还可以使用类似 cron的表达式指定高级时间设置。 这种格式提供了更灵活的调度选项。
TeamCity 使用 Quartz 处理 cron 表达式。 请查看 这些示例 ,或者考虑使用 CronMaker 实用工具,基于 Quartz cron 格式生成表达式。
您可以通过启用 仅在存在待处理更改时触发 选项,限制计划触发器仅在您的版本控制中存在待处理更改时启动构建。 此选项仅考虑新检测到的待处理更改:如果在创建触发器之前已存在待处理更改,则不会触发构建。
如果在构建配置的版本控制设置中启用了 "显示快照依赖项的更改 " 选项,调度触发器也将 考虑来自依赖配置的更改)。
如果未指定触发规则,那么一旦检测到构建配置的任何更改,就会触发构建。 您可以通过更改 VCS 根设置并指定 checkout rules 来控制检测到的更改。
tip
观看我们的 视频指南 ,了解 签出规则和触发规则之间的区别。
为限制触发构建的更改,请使用 VCS 触发规则。 您可以在文本区域中手动添加这些规则(每行一个),或者使用 添加新规则 按钮生成它们(如有必要,请向下滚动以显示按钮)。

每条规则要么是"包含"(以 +
开始),要么是"排除"(以 -
开始)。
单个规则的一般语法是:
+|-[:[user=VCS_username;][root=VCS_root_id;][comment=VCS_comment_regexp]]:Ant_like_wildcard
tip
这里, pipe符号
|
表示 或 命令,如正则表达式中:使用+
包含,使用 或-
排除。
where:
Ant_like_wildcard
:用来匹配已更改文件路径的 通配符。 仅支持*
和**
模式,不支持?
模式 非。 规则中的文件路径可以是相对路径(不以/
或\
开头),以匹配代理上的结果路径,或者是绝对路径(以/
开头),以匹配相对于 VCS 根的 VCS 路径。 对于更改中的每个文件,都会找到最具体的规则(匹配最长文件路径的规则)。 如果有至少一个文件与“include”规则匹配,或者文件没有与“exclude”规则匹配,那么将触发构建。VCS_username
:如果指定,将规则限制为只适用于由具有相应的 VCS 用户名 的用户所做的更改。VCS_root_id
:如果指定了,该规则将仅限于对应的 VCS 根目录的更改。VCS_comment_regexp
:如果指定,则只限于在 VCS 注释中包含指定文本的更改。 请使用 Java 正则表达式 模式匹配注释中的文本(请参见下面的示例)。 如果注释文本包含匹配的文本部分,该规则则匹配;要匹配整个文本,请包含^
和$
特殊字符。
tip
在指定规则时,请注意,只要您输入任何
+
规则,TeamCity 就会将隐式默认值从 “包含全部” 更改为 “排除全部”。
要包含所有文件,请使用+:.
规则。另外,规则是依据路径特异性进行排序的。 如果您对
/some/path
有明确的包含规则,并对所有路径有-:user=some_user:.
排除规则,则对/some/path
的提交来自some_user
将会 已包含 ,除非您同时为该用户和该路径添加特定的排除规则,例如-:user=some_user:/some/path/**
。
示例 | 描述 |
---|---|
+:. | 包含所有文件 |
-:**.html | 排除所有 |
-":user=techwriter;root=InternalSVN:/misc/doc/*.xml | 排除由 |
-:lib/** | 阻止由于对构建源代码的 |
-:comment=minor:** | 如果更改检查包含注释中的单词 |
-:comment=^oops$:** | 如果注释仅由 |
+":comment=#teamcity:** | 如果评论包含 |
+":comment=(?s)#teamcity.*#major:** | 如果评论中同时包含了 例如,以下的注释将会触发构建:
|
计划触发器可以监视任何指定的构建配置中的构建,并且只有在被监视的构建自上次触发以来发生变化时,才会触发构建。 您可以选择要查看的构建:
如果触发器检测到一个新的构建满足被监视配置中所选的特性,它会在自己的配置中排队一个新的构建。
触发器只观察目标分支中的常规(非 个人 或 历史 )构建。 如果被监视的配置在多个分支中完成了构建,则触发器设置还包括 构建分支过滤器 字段,允许您仅监视特定分支中的构建。 此设置最初设置为 +:<default>
,这意味着触发器将仅监视被监视配置的默认分支中的构建。
如果触发的构建依赖于通过快照或工件依赖的监视构建,选择 "Promote watched build" 选项,以便 TeamCity 可以自动将检测到的构建 promote 为触发的构建。 否则,构建将如常触发,并与检测到的构建无关。
启用 在构建之前删除检出目录中的所有文件 选项,以强制 TeamCity 在运行构建之前清理检出目录中的所有文件。
此选项也可应用于快照依赖。 在这种情况下,构建链中的所有构建都将被强制使用 clean checkout。 该选项还可以重新构建所有依赖项(除非通过自定义构建对话框或计划触发器提供自定义依赖项或促进构建)。
使用此选项可以在所有启用并与构建配置兼容的代理上同时运行构建。 此选项在以下情况下可能很有用:
为了代理维护目的运行构建(例如,您可以创建一个配置来检查代理在环境升级 / 更新后是否正常运行)
在不同平台上运行构建(例如,您可以设置配置,并为其指定多个已安装不同环境的兼容构建代理)
默认情况下,TeamCity 优化构建队列 :已排队的构建可以被已开始的构建或更近期的排队构建所替换。 您可以通过取消勾选相应的框来禁用此默认行为。
默认情况下,计划触发器适用于所有分支。
在 Branch Filter 中阅读更多内容。
触发规则和分支过滤器由 和 组合,这意味着仅在 当两个条件都满足时 时触发构建。
例如,如果您在触发规则字段中指定了一段评论文字,并提供了分支规格,那么构建只有在提交包含指定文字且同时在分支过滤器匹配的分支中时才会被触发。
触发器设置的 构建自定义 选项卡允许配置由此触发器启动的构建的自定义参数。 与 Run Custom Build 对话框类似,它让您可以覆盖 构建参数 的值,并选择是否在构建前清理 检出目录。
在此选项卡中,您可以自定义当前 构建配置中使用的任何 参数的值。 或者,您可以添加一个新的参数,它将仅在由此触发器启动的构建中可用。 如果当前构建对其他构建有 快照依赖 ,这样一个参数也可以用来 覆盖依赖构建配置的某个属性 :使用这个 reverse.dep.<dependencyBuildID>.<property>
语法。
tip
如果您将此功能与 build step execution conditions 结合使用,效果会更好。 您只需向步骤添加一个基于参数的条件,然后配置两个触发器:一个将运行包含此步骤的构建(条件满足时),另一个则会运行不包含此步骤的构建。 一种常见的用例是在常规构建中运行有限的测试,但在夜间构建中,当服务器负载最低时,运行完整的测试集。
请注意,如果您在触发器中重新定义了构建参数,然后在 参数 中删除了原始参数,其重新定义的值将被转换为触发器自己的纯文本参数。 在定制安全值时,这一点至关重要,因为只有与 "Password" 类型 一起存储时,它们才会被隐藏,如果转化为纯文本,它们将变得可读。
TeamCity 允许以多种方式解决类似的任务,在某些情况下,仍然优先创建不同的构建配置。 例如,如果在同一配置中有太多自定义运行,那么 TeamCity 预测每次构建的确切持续时间可能会更加困难。 如果您需要触发带有大量不同参数的构建,我们建议您创建一个 构建配置模板 ,并将其用作各种配置的蓝图,每种配置都有其自己的参数。