我们使用 TFS2010 进行源代码控制,使用 TeamCity 8.x 进行 CI。在我们的项目中,我们有用于发布和错误修复的 Main
分支,以及用于大部分开发的 Dev
分支。两个分支的构建步骤是相同的。我们需要进行一些构建配置:
我似乎无法让 TeamCity 在单个分支上进行 checkout 并仅在 checkin 的分支上运行构建。
第一次尝试:我添加了一个 VCS 根来指向 $/Root
,其中包含 Main
和 Dev
分支并创建了结帐规则:
第一次 checkin Main
工作正常。失败后 checkin Dev
如下:
其中 DoNotExportAttribute
是在 Dev 分支中修改的文件。即使我有
复选框“在构建之前清除 checkout 目录中的所有文件”。
我的第二次尝试是将两个分支添加为 VCS 根:
但这会导致两个分支 check out 到同一目录中,并且首先 check out 的内容会被第二个分支覆盖。
是否有一种补救措施可以解决我们的情况,而无需为每个分支创建单独的配置? (我们从每个分支配置开始,但事实证明,对于我们在构建中执行的步骤数量而言,维护工作量很大)
最佳答案
如果我理解正确的话,您正在尝试对主构建和分支构建使用单个 TeamCity 项目。我不建议这样做。通过在主构建和分支构建中重复使用同一项目,您将在两个不同的野兽之间共享版本号。版本 1.1.4 的构建可能是主构建,而版本 1.1.5 可能是分支构建。
通过查看构建创建的工件,也很难确定哪个源代码被选择并包含到该工件中。可执行文件是主可执行文件还是分支可执行文件?
我们解决主要与分支问题的方法是创建一个"template"项目,其中包含我们所有的构建配置(每个配置都设置为构建配置模板,以便它们都可以在一个位置进行更改)来构建我们的软件。主线和分支项目都是通过复制此"template"项目并将 VCS 根设置到适当的目录位置来创建的。
我们运行五个构建代理,每个构建都需要相当长的时间。如果主分支和任何分支碰巧同时被修改,每个分支都有单独的项目允许我们并行运行构建,而对于一个项目,构建将串行完成。
希望这有帮助。
关于tfs - 在 Teamcity 中使用多个 TFS 分支。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402793/