TeamCity构建 - VCS触发器/分支规范未按预期工作

时间:2014-05-13 10:51:35

标签: git build branch teamcity

我有一个包含3个经典分支(dev,staging,master)的Git存储库。 我试图在TeamCity 8.1.x中设置VCS,这样只有在对存储库中的特定子文件夹进行推送时才会触发构建。

实施例: 在dev分支下,我有2个文件夹:

(dev)
- ServiceAPI/
- ServiceAPI.Test/

现在,我希望TeamCity 仅在我推送ServiceAPI文件夹中的更改时触发构建,而不是另一个(ServiceWeb.Test)。

我试图设置一些不同的配置(我认为这可以使用分支规范完成,但它不起作用,或者我做错了)。

在VCS配置中,我有:
默认分支设置为 dev
分支机构规范设置为 +:refs / heads / dev / ServiceAPI / *

假设默认分支始终处于活动状态, 我尝试在分支规范中添加 - :refs / heads / dev / * 来取消它,但它不起作用。

我还尝试在默认分支中添加一个与 dev 不同的分支,但是当推送 dev中的更改时触发器不起作用分支,无论分支规范中的内容如何。

然后我尝试通过将 - :refs / heads / dev / ServiceAPI.Test / * 插入分支规范 ServiceApi.Test 文件夹>,但那也没有用。当我将更改推送到任一文件夹时,TeamCity会构建。

我希望我能够很好地解释这个问题。如果您需要更多信息,请与我们联系 任何想法都会受到欢迎。

此致 贡纳尔


已更新:此问题已得到解决,但我无法记住确切的问题,而且我也懒得检查出来。但是,如果有人遇到这个并且无法解决问题,请随时告诉我,我很可能会重现问题,并在必要时给出详细的答案。

2 个答案:

答案 0 :(得分:2)

@Gunnar,还有另一种方法。您可以创建构建触发器,特别是VCS触发器,它将忽略独占路径中的任何更改。这些工作在类似Ant的wildCards的语法中。因此,您可以创建一个触发器,该触发器仅针对ServiceAPI中的更改运行,或者针对除ServiceAPI.Test /之外的任何内容运行的更改。

语法为+:ServiceAPI / **或 - :ServiceAPI /**.

PS:另请注意,您要监控的默认分支与触发条件不同。

答案 1 :(得分:1)

@Gunnar,尝试添加+和 - 变体,看它是否有效。如果添加排他性运算符,有时候teamcity会感到困惑。

-:refs/heads/dev/* 
-:refs/heads/dev/ServiceAPI.Test/*

此外,参数化您的GIT仓库名称,以便您可以将分支名称(即要监控的)作为参数传递。 IT将有助于减少Teamcity扫描更大的回购的时间

@Gunnar,通过参数化我的意思是: 在teamctity的GiT repo设置中,对于默认分支输入,请输入ex%branch.name%的参数。在构建目标中,如果使用参数%branch.name%提及分支的名称,它将仅使用参数监视您提供的分支/路径。例如,如果你将param作为你的构建目标中的开发,它将仅监视开发分支。

一旦您这样做,您的排他性运营商就会更改为

-:ServiceAPI.Test/*