2015-05-06 50 views
1

我们希望我们的Teamcity服务器在某人将某件事物合并回主分支时自动构建。Trigger Teamcity基于成功的Git合并构建

为此,我们创建了一个新的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使用此有时)

这应该与这样的:

合并分支 '测试' 到 '主人'

合并分支 '功能-CS-200' 变成 '主人'

然而,该版本是永远不会触发。显然,正则表达式与正确的模式不匹配。

任何想法?

结束... 显然TeamCity的决定了+:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$正则表达式现在是好的,并触发时提交信息的实例相匹配的基础之上。也许有一些缓存或其他引起触发不能触发的东西。

+2

为什么不只是触发一个提交到主?合并将创建一个提交... –

+0

我们想要这样做的原因是因为Teamcity会以这种方式触发2个(或更多)构建,一个用于合并人员,另一个用于合并分支的作者(因为该选项:'如果他们来自同一个提交者,则在构建中包含多个签入')。这不是一个大问题,但会导致一些开销。因此,我们现在决定,只有构建以这种方式合并时才会触发。 –

回答

1

我不确定为什么你只想触发你的构建只包含单词“合并到”提交。如果有人做了fast-forward合并,提交消息将不会记录合并消息。他们将会记录一个提交列表。你永远不会得到一个触发器的列表。

不管怎么说,如果你还希望它只是在合并时的消息是+:comment=into master:**

实在不行运行掌握,你可以设置在主一个VCS触发(只),并运行TeamCity的目标,则可以只是尝试匹配正则表达式'+:comment=Merge branch .*成为主:**'