我们使用TFS2010进行源代码管理,使用TeamCity 8.x进行CI。在我们的项目中,我们有Main
分支用于发布和错误修复,而Dev
用于大多数开发。两个分支的构建步骤是相同的。我们有一些构建配置可以通过:
我似乎无法让TeamCity在一个分支上执行checkout,并且仅在签入的分支上运行build。
首次尝试:我添加了一个VCS Root指向包含$/Root
和Main
分支的Dev
并创建了结帐规则:
首先登录Main
工作正常。在失败后签到Dev
:
其中DoNotExportAttribute
是在Dev分支中修改的文件。即使我有
复选框“在构建之前清除结帐目录中的所有文件”。
我的第二次尝试是将两个分支添加为VCS根:
但是这导致两个分支的检出都进入同一个目录,而第一个分支首先被结账覆盖了。
如果没有为每个分支创建单独的配置,我们的案例是否有补救措施? (我们从config-per-branch开始,但事实证明,对于我们在构建中执行的步骤,维护很重要)
答案 0 :(得分:3)
如果我理解正确,您正在尝试将单个TeamCity项目用于主要和分支构建。我不建议这样做。通过为主要和分支构建重用相同的项目,您将在两个不同的动物之间共享版本号。构建版本1.1.4可能是主构建版本,而版本1.1.5可能是分支构建版本。
通过查看构建创建的工件,还很难确定哪个源代码是选择的并包含在该工件中的源代码。可执行文件是主要的还是分支的可执行文件?
我们解决主要与分支问题的方式是创建一个“模板”项目,其中包含我们所有的构建配置(每个构建配置模板,因此它们都可以在一个位置进行更改)以构建我们的软件。主线和分支项目都是通过复制此“模板”项目并将VCS根目录设置到适当的目录位置来创建的。
我们运行五个构建代理,每个构建需要相当长的时间。如果主要和任何分支碰巧同时被修改,那么为每个分支创建单独的项目允许我们并行运行构建,而对于单个项目,构建将按顺序完成。
希望这有帮助。