TFS Build复制完整的存储库以进行构建

时间:2013-03-08 12:59:43

标签: tfs tfs2010 continuous-integration tfsbuild

我们为项目设置了TFS Build,但在每次构建时,系统都会复制整个存储库,然后编译我们的解决方案。我们如何确保TFS Build仅下载解决方案所需的文件,而无需手动隐藏每个不需要的目录?现在它下载超过2GIG的数据只是为了编译一个小于100mb的项目(源文件)。其他数据是自动构建不需要的测试数据库和文件。

修改: 一些进一步的调查让我去搜索一些关键词。这些帖子正在帮助: Team Build - Get Workspace - get latest from specific paths, NOT everything

TFS Build and workspace

仍在调查中。欢迎提出任何意见。

修改: 一个选项是使用我自己的扩展活动替换Build流程定义中的CreateWorkspace。我希望发现有人已经做过..基本上你会使用VersionControlServer对象来下载必要的文件而不是整个工作区。

修改 目前没有真正的好答案/解决方案。我提供了一些选项,响应的人提供了一些替代方案,但您不能轻易地将TFS构建过程更改为仅下载作为解决方案一部分的数据而不是整个存储库。因此,请在构建存储库时注意。

2 个答案:

答案 0 :(得分:3)

您希望将Build Definition映射设置为仅包含您要编译的源。这意味着您不必cloak任何事情。

  • 编辑构建配置
  • 点击源设置(VS 2012),工作区(VS 2010)
  • 特定示例映射如下所示:

状态 源控制文件夹 构建代理文件夹
有效 $ /路径/到/该/ SolutionOrProjectFolder $(SourceDir)\

这将使此版本的workspace限制为您希望构建的解决方案。因此,只有其下的AssemblyInfo文件才对您的构建活动可见。

如果由于设置了源代码管理器而无法执行此操作,那么我建议您在Source Control中重新构建文件夹。

答案 1 :(得分:2)

如果您有多个Build Agent,则应限制可以针对构建定义运行的代理程序的数量。这将停止将同一来源的多个副本下载到构建机器上。

您已在问题中回答的下一部分,通过将构建定义中的“清洁工作区”选项更改为,构建代理将仅下载当前构建和上一构建之间的变更集。