在成功 Git 合并时触发 Teamcity 构建

Trigger Teamcity build on successful Git merge

我们希望我们的 Teamcity 服务器在有人将某些内容合并回 master 分支时自动构建。

为此,我们创建了一个新的 VCS 触发器并选中了 Trigger a build on each check-in 选项。我们已禁用 Quiet period mode 并为触发规则添加了正则表达式。 查看 Java regex documentation 我创建了以下正则表达式: ^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$ 触发规则 文本块中转换为以下内容:+:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$+:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$:** (我一点也不知道 :** 应该可以,但是 TC documentation 有时会使用它)

这应该匹配如下内容:

Merge branch 'test' into 'master'

Merge branch 'feature-cs-200' into 'master'

但是,构建从未被触发。显然正则表达式与正确的模式不匹配。

有什么想法吗?

完成... 显然 Teamcity 已经决定 +:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$ 正则表达式现在很好,并且只要提交消息与示例匹配就会触发构建。也许有一些缓存或其他原因导致触发器不触发。

我不确定为什么您只想在包含单词 "merge into" 的提交上触发您的构建。如果有人进行 fast-forward 合并,提交消息将不会记录合并消息。他们将改为记录提交列表。你永远不会得到触发器列表。

无论如何,如果您仍然希望它 运行 仅在合并到 master 时,您可以在 master 上(仅)设置 VCS 触发器和 运行 teamcity 目标,只要消息是 +:comment=into master:**

如果没有任何效果,您可以尝试将正则表达式 '+:comment=Merge branch .* 匹配到 master:**'