使用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&;是默认的,仍然需要实际指定两者…乍一看可能不太直观,但它就是这样-而且它有效。