我在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都配置为功能分支,但是,删除分支规范也不会对结果产生影响。
之前是否有人遇到类似问题并能够提出一些建议?
答案 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