除默认分支外,针对所有分支的TeamCity分支规范

5

我们有一个专用的VCS根,用于检入检查分支的步骤(这是我们为主代码执行的一部分)。

我尝试过滤Bitbucket拉取请求分支和主分支,只在“真正的”分支上触发它,但它仍然会构建主要提交,这是一种浪费资源的行为。

我尝试了这个规范:

-:<default>
-:refs/pull-requests/*
+:*

根据我对规范语法的理解,这应该可以正常工作,但是TeamCity不同意。
1个回答

8

有三个地方可以定义分支。前两个(Default Branch和Branch Specification)在你的VCS Root中,使用Git规范格式(refs/heads/master),并且定义要监视哪些引用进行更改[1]。

VCS Root

Team City需要一个默认分支来比较更改。这通常是master,除非您有非标准配置。在分支规范中,您需要定义任何其他引用以监视更改。对于在分支规范中定义的引用的任何更改都会挂钩到TeamCity以进行处理。

您的场景下的VCS Root设置:

  • 默认分支:/refs/heads/master
  • 分支规范:+:*

版本控制设置

版本控制设置是真正发生魔法的地方。在这些设置中,仅将定义的分支提供给构建。此部分使用逻辑名称来定义要包含的分支。您可能需要单击“显示高级设置”以查看分支筛选器[2]。

您可以通过单击分支筛选器旁边的向导来测试所有内容是否正常工作。单击小魔棒图标,您应该会看到VCS Root正在监视的所有分支。它应该包括您的Git存储库中当前的任何其他分支。如果这样更容易,您可以使用向导构建您的筛选器。

对于您的场景,您应该监视所有内容(+:*),排除主分支(-:<default>)和您想要忽略的任何其他分支(-:pull-requests/*)。它应该长这样:

+:*
-:<default>
-:pull-requests/*

这意味着主分支或以 pull-requests 开头的任何分支所发生的更改都会被忽略。
您可以使用构建触发器并指定哪些特定分支触发构建来更精细地控制基于这里的分支发生的情况。[3]
注意: 有一些关于分支过滤和规范的规则可能会引起兴趣。[4]
参考资料: 1:https://www.jetbrains.com/help/teamcity/2019.2/working-with-feature-branches.html#WorkingwithFeatureBranches-Configuringbranches 2:https://www.jetbrains.com/help/teamcity/2019.2/branch-filter.html 3:https://www.jetbrains.com/help/teamcity/2019.2/configuring-build-triggers.html 4:https://www.jetbrains.com/help/teamcity/2019.2/working-with-feature-branches.html#WorkingwithFeatureBranches-branchSpec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接