tfs - 在 Teamcity 中使用多个 TFS 分支。如何?

标签 tfs branch teamcity-8.0

我们使用 TFS2010 进行源代码控制,使用 TeamCity 8.x 进行 CI。在我们的项目中,我们有用于发布和错误修复的 Main 分支,以及用于大部分开发的 Dev 分支。两个分支的构建步骤是相同的​​。我们需要进行一些构建配置:

List of build configurations

我似乎无法让 TeamCity 在单个分支上进行 checkout 并仅在 checkin 的分支上运行构建。

第一次尝试:我添加了一个 VCS 根来指向 $/Root,其中包含 MainDev 分支并创建了结帐规则:

Checkout rules

第一次 checkin Main工作正常。失败后 checkin Dev 如下:

Build Failed to start

其中 DoNotExportAttribute 是在 Dev 分支中修改的文件。即使我有 复选框“在构建之前清除 checkout 目录中的所有文件”。

我的第二次尝试是将两个分支添加为 VCS 根:

VCS Roots

但这会导致两个分支 check out 到同一目录中,并且首先 check out 的内容会被第二个分支覆盖。

是否有一种补救措施可以解决我们的情况,而无需为每个分支创建单独的配置? (我们从每个分支配置开始,但事实证明,对于我们在构建中执行的步骤数量而言,维护工作量很大)

最佳答案

如果我理解正确的话,您正在尝试对主构建和分支构建使用单个 TeamCity 项目。我不建议这样做。通过在主构建和分支构建中重复使用同一项目,您将在两个不同的野兽之间共享版本号。版本 1.1.4 的构建可能是主构建,而版本 1.1.5 可能是分支构建。

通过查看构建创建的工件,也很难确定哪个源代码被选择并包含到该工件中。可执行文件是主可执行文件还是分支可执行文件?

我们解决主要与分支问题的方法是创建一个"template"项目,其中包含我们所有的构建配置(每个配置都设置为构建配置模板,以便它们都可以在一个位置进行更改)来构建我们的软件。主线和分支项目都是通过复制此"template"项目并将 VCS 根设置到适当的目录位置来创建的。

我们运行五个构建代理,每个构建都需要相当长的时间。如果主分支和任何分支碰巧同时被修改,每个分支都有单独的项目允许我们并行运行构建,而对于一个项目,构建将串行完成。

希望这有帮助。

关于tfs - 在 Teamcity 中使用多个 TFS 分支。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402793/

相关文章:

svn - "svn log --stop-on-copy"无法显示对高于创建分支的版本的修订所做的更改

SVN 看不到原始文件夹和移动版本之间的冲突

version-control - 命名分支与多个存储库

git - 触发快照依赖以在 TeamCity 中构建特定分支

teamcity - 如何在 TeamCity 中获取 PassedTestCount 和 FailedTestCount?

git - 如何配置 Visual Studio 以使用 Beyond compare for TFS GIT?

tfs - Visual Studio Team Services 构建无法找到库

tfs - 在 TFS API 中将 WorkItem 还原(或撤消保存的更改)到旧版本

angular - 在我的 tfs 构建中运行 `npm test` 时如何防止 ENOENT 错误?

teamcity - TeamCity 中灰显的构建是什么意思?