分支过滤器
如果一个 VCS root 设定了 特定的分支,则在 TeamCity 的各种操作中,分支筛选 选项将变得可用。
分支过滤器的使用
目前,分支过滤器可以在以下 TeamCity 设置页面上进行配置:
设置 | 分支过滤器说明 |
---|---|
版本控制设置的构建配置 | 限制构建配置中可用的分支集。 此分支筛选器在应用任何其他分支筛选器之前应用,并限制在自定义构建对话框中显示的分支,以及触发器和构建功能可见的分支。 |
限制依赖构建,其产物将在当前配置的构建中使用,只限于在匹配分支中的构建。 | |
限制此完成构建触发器将监视的分支集。 | |
限制可以由此 VCS 触发器触发构建的分支集。 | |
限制应用触发器的分支集。
| |
设置一个分支过滤器,只在符合指定条件的分支中重新运行失败的构建。 | |
VCS 标记 构建功能 | 将标签应用的构建所在的分支集合进行限制。 |
自动合并 构建功能 | 限制将要合并构建源的分支集。 |
设置过滤器,只接收来自指定分支的构建的警报。 默认情况下,只有默认分支会被监控。 | |
Pull Requests 构建功能 | 指定在哪些分支上进行监视并触发拉取请求。 此功能的过滤器应引用完全明确的 VCS 名称( |
指定一个命名模式,清理规则将适用于此模式的分支。 请注意,根据 "Apply rule" 的设置,它可能会应用于每个匹配分支的选定构建数量,也可能会应用于一组匹配分支的选定构建数量。 |
如果在单个根目录上配置了多个分支过滤器,将应用以下优先级顺序:
VCS 根设置中的 branch specification 定义了初始的受监视分支集。
如果指定,构建配置的 版本控制设置 中的分支过滤器可以缩小初始分支集合的范围。
如果指定,构建触发器设置中的分支筛选器应用于筛选器声明的子集(2)。
分支过滤器格式
要过滤分支,请使用以换行符分隔的 +|-:logical_branch_name
规则列表,其中 logical_branch_name
是在 TeamCity UI 中显示的名称(例如, master
)。 名称区分大小写。
+:
规则将匹配的分支包含在接受分支的列表中, -:
规则则将分支从列表中排除。
每个规则都可以有一个可选的通配符 *
占位符,它可以匹配一个或多个字符: +|-:名称*
将匹配分支 name1
,但 将不会 匹配分支 名称
,需要显式添加。
您可以在分支过滤器中使用参数引用。
当单个分支被分支过滤器的多行匹配时,适用最具体(由模式匹配的字符最少)的最后一条规则。 也就是说,如果过滤器包含一个与分支完全匹配的模式(即,一个没有 *
通配符的模式),那么将使用最后一个这样的模式。
其他示例:
仅接受默认分支:
+:<default>除默认分支外,所有分支都被接受:
+:* -:<default>只接受带有
功能-
前缀的分支:+:feature-*空的分支过滤器(接受所有分支):
+:*
通配符和模式
使用星号("*")作为任何字符串的通配符。 例如, +pr:*
和 -pr:*
规则允许对象(触发器或自动合并 功能)接受或忽略所有传入请求。
以下规则仅允许对象接受目标分支以 "dev/" 开头的请求:
筛选器优先级
拉取请求筛选表达式的应用方式与常规 +|-:<branch_name>
表达式相同:从第一个开始逐一应用。 这意味着在表达式冲突的情况下,最后一个具有最高优先级。 例如,以下规则集允许其父对象接受所有可用的分支,然后排除所有拉取请求分支,最后重新启用由组织成员授权的拉取请求。
以下组合过滤器拒绝来自分叉仓库的拉取请求,即使它们针对的是 主要
分支(因为 sourceRepo
条件是最后出现的)。
示例
以下的 Kotlin DSL 样例展示了如何结合 VCS 和 Schedule 触发器来实现以下设置:
一旦 TeamCity 检测到现有分支中的更改,就会立即构建;
由组织成员编写的非草稿拉取(合并)请求将在 TeamCity 收集到它们的信息后立即构建;
来自合作伙伴和贡献者的非草稿拉取(合并)请求,如果这些请求针对两个稳定仓库分支之一,将在凌晨3:00进行夜间构建。