TeamCity BranchFilter导致默认分支被禁用的错误



使用teamcity2020.2.4

构建作业有多个VCS根设置由"源代码"组成;和"utility scripts"

工具脚本"总是在同一个分支(主)上;但是,"源代码"在master(也就是default)或release/### branch中。

源代码;根有:

Default branch: refs/heads/master
Branch specification:
+:refs/heads/(master)
+:refs/heads/(release/*)

目前有2个版本,一个是主版本(长时间运行的版本),一个是发布版本(做一些额外的步骤来准备发布)。

最初的想法是隐藏"master_master_quot;默认分支显示,因此遵循TeamCity自己的文档(https://www.jetbrains.com/help/teamcity/branch-filter.html#Branch+Filter+Format),这意味着我可以调整分支过滤器:

+:*
-:<default>

(也有一些文章提到这是一个答案,但多年前)

然而,当这样做时,最终得到错误:

Failed to collect changes, error: Builds in default branch are disabled in build configuration

看起来触发器运行得很好,但这是手动构建,事情真的偏离了方向。

我甚至试过用默认的+提示参数重写teamcity.build.branch,没有这样的运气。

我见过在另一个工作中包装它的情况,但是仅仅做TC说的应该是可能的,这有点黑客。

找到了一个解决方案,在这里发布以帮助下一个人…

所以,尽管TeamCity提到了"逻辑分支名称";用于"分支过滤器";在版本控制设置中,可以提供完整的分支名称。

因此"refs/头/master"可以使用。这似乎有效地允许一个VCS根继续使用它的默认/master,同时允许第二个根使用其他选项。

例如:

VCS Root #1 config:

Default: refs/heads/master
Spec: 
+:refs/heads/(master)
+:refs/heads/(release/*)

VCS Root #1 config:

Default: refs/heads/master
Spec: (empty)

当做不同的工作时,分支过滤器将被设置为:

"主only"

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

"释放only"

+:refs/heads/master
+:<default>
+:master

值得注意的是,尽管&;master&;是默认的,仍然需要实际指定两者…乍一看可能不太直观,但它就是这样-而且它有效。

最新更新