TeamCity VCS在多个VCS Roots附加到Build Configuration时触发

时间:2014-10-31 13:26:59

标签: build continuous-integration teamcity teamcity-8.0

我在TeamCity中有一个构建配置(TeamCity Professional 8.1.5(build 30240)),附加了两个VCS根。 VCS根源指向单独的存储库。

此构建配置具有VCS触发器,其配置为在每次签入时触发项目,未指定静默期。问题是,这个触发器似乎不起作用,因为构建仍然处于Pending状态。

添加了一个触发规则:" +:root = VCSId_ProjectA:**"以便改变" ProjectB"不会调用触发器。当只有一个VCS根连接到构建配置并且它按预期工作时,已经测试了此触发器。

通过轮询ProjectA存储库以及ProjectA的POST挂钩测试了触发器。两种结果都是一样的。 (我甚至尝试从ProjectA存储库发送多个POST挂钩,说明ProjectA和ProjectB已经更改,不出所料,这种绝望测试也没有用。)

其中一个VCS根的结帐规则是:" +:。 => .ProjectB&#34 ;.这是为了确保ProjectB不在ProjectA的根目录中,而是在子目录中。手动启动Pending构建时,将从正确的位置获取这两个存储库。

两个VCS Roots都配置为功能分支,但是,删除分支规范也不会对结果产生影响。

之前是否有人遇到类似问题并能够提出一些建议?

2 个答案:

答案 0 :(得分:1)

它可能有所不同,也可能没有,但结帐规则应该是斜杠:" +:。=> ./ ProjectB"例如TeamCity 8.1 documentation中的示例。

另外请注意,在没有触发构建的情况下,您仍会看到此构建配置中的挂起更改。当ProjectB发生变化时会发生这种情况,但ProjectA中没有变化。

如果上面没有回答这个问题,并且对这个配置有了更多的了解,那么在没有相应的触发规则的情况下拥有额外VCS Root的目的是什么?

答案 1 :(得分:1)

我有相同的配置:2个VCS根。
我需要触发第一个VCS根的master分支并运行build 如果检测到签入,它将检出第二个VCS根并运行build。

将此行添加到VSC根触发器规则帮助我: indent(I, S) :- is_list(S) -> maplist(indent(I), S) ; ( atomic(S) ; var(S) ) -> format('~s~w~n', [I, S]) ; S =.. [F|Args], format('~s~w~n', [I, F]), maplist(indent([0' |I]), Args).

没有?- indent([],[sentence([nounp(_G2571,[noun(_G2571,buffalo)],subject),verbp([trans_verb(buffalo),nounp(_G2587,[adj(buffalo),nounp(_G2587,[noun(_G2587,buffalo)],object)])])])]). sentence nounp _G7615 noun _G7615 buffalo subject verbp trans_verb buffalo nounp _G7638 adj buffalo nounp _G7638 noun _G7638 buffalo object

,它无效

TeamCity v9.1.3