如何在Teamcity中设置VCS触发器,以便仅在特定目录中的文件发生更改时运行构建?

时间:2017-10-04 22:45:23

标签: git triggers teamcity

是否可以在TC中为构建设置VCS触发器,以便在合并时特定目录的内容发生更改时可以启动构建?

假设我的项目结构如下所示:

/
|_ foo/
|_ bar/
    |_ test/
        |_ file.txt
|_ baz/

我的VCS root只是配置为指向项目的根级别。换句话说,我没有任何自定义结帐规则,这意味着在每次构建时,TC都会签出整个项目副本。我还将 VCS结帐模式配置为始终在代理上签出文件,然后选中清除结构前的结帐目录中的所有文件

现在,我想创建一个VCS触发器,仅在/bar/test目录的内容发生任何更改时才启动构建。根据我上面的项目结构,我使用以下配置创建了一个VCS触发器:

  • 选中在每次办理登机手续时触发构建
  • 选中不要用于安静时段模式
  • 添加了以下触发规则+:root=MyProject:bar/test/**(此处" MyProject"是我给根的名称。

基于我在TC触发器上阅读的所有文档,这应该已经完成​​了。但根据我的理解,实际行为与我的期望并不完全一致。

在这种情况下,当我将更改合并到foo/目录时,没有按预期触发任何内容。但是,如果我将更改合并到bar/目录,则会触发我的构建,即使这不是规则的配置。

我尝试过但没有成功的一些规则是:

  • +:root=MyProject:**bar/test**
  • +:root=MyProject:**test**
  • +:root=MyProject:/bar/test/**
  • +:**bar/test/**
  • +:**bar/test**
  • +:bar/test/**
  • +:bar/test

我尝试了很多不同的规则变化,但无论如何,我仍然看到触发器行为的不一致,我完全不知道为什么会发生这种情况。有没有人成功设置基本的VCS触发器?我也不完全理解的一件事是VCS root和触发器之间的关系,我觉得我可能会错误配置一些东西,但这很难说。

0 个答案:

没有答案