不同分支具有不同 "Per-checkin Triggering" 的多个 VCS 触发器

Multiple VCS Trigger with different "Per-checkin Triggering" for different branches

我需要两个基于 banch 过滤器的具有不同每次签入触发规则的 VCS 触发器。

原因:对于 "release-*" 和 "master" 分支,当我合并所有内容时,我不希望每次签入都创建一个构建,但是我在使用任何其他分支时都这样做。我虽然可以通过添加第二个触发器过滤分支来做到这一点,所以它们看起来像这样:

第一个 VCS 触发器,这将构建所有这些分支 "Trigger a build on each check-in" 检查

-:*
+:refs/heads/hotfix/hotfix-*
+:refs/heads/develop
+:refs/heads/feature/feature-*

第二个 VCS 触发器,这将构建所有这些分支 "Trigger a build on each check-in" 未选中

-:*
+:refs/heads/release/release-*
+:refs/heads/master

(请原谅我的绘画技术不是那么棒)

还有其他方法吗?

谢谢

史蒂夫

我找不到如何在单个构建配置上添加 2 个 VCS 触发器,您试过了吗?

虽然我在 TC 10,但如果那真的不起作用,那么我能想到的唯一方法就是创建 2 个单独的版本。 :|

解决方案是修改构建配置 XML。步骤是: 找到您的 TeamCity 项目文件夹,它是 TeamCity 数据目录的子目录,我的是 C:\ApplicationData\TeamCity\config\projects.

在示例下找到它所在的每个项目子文件夹的构建配置:C:\ApplicationData\TeamCity\config\projects\parentProj_Proj\buildTypes\build_config_name.xml

在这个文件的底部是我找到构建触发器部分的地方,在那里找到当前构建触发器你有一个副本,但记得更改 [=20= 上的 "id" 属性] 元素。所以我的最终配置如下所示:

<build-triggers>
      <build-trigger id="vcsTrigger" type="vcsTrigger">
        <parameters>
          <param name="branchFilter"><![CDATA[-:*
+:refs/heads/hotfix/hotfix-*
+:refs/heads/develop
+:refs/heads/feature/feature-*]]></param>
          <param name="groupCheckinsByCommitter" value="true" />
          <param name="perCheckinTriggering" value="true" />
          <param name="quietPeriodMode" value="DO_NOT_USE" />
        </parameters>
      </build-trigger>
      <build-trigger id="vcsTrigger1" type="vcsTrigger">
        <parameters>
          <param name="branchFilter"><![CDATA[-:*
+:refs/heads/release/release-*
+:refs/heads/master]]></param>
          <param name="quietPeriodMode" value="DO_NOT_USE" />
        </parameters>
      </build-trigger>
    </build-triggers>

这虽然可能不受支持,但似乎工作得很好。