TFS 2008持续集成MSBUILD on Branch在Label上失败

时间:2009-06-19 21:16:00

标签: tfs msbuild continuous-integration

我正在尝试在我的一个TFS项目的分支上使用CI。当我尝试使用分支时,MSBuild只会失败。我在“主干”项目中指向相同的Build它工作正常。

我从构建日志收到的错误:

  

任务“标签”

     

Label TeamFoundationServerUrl =“http:// TFSServer:8080 /”   BuildUri = “vstfs:///构建/建立/ 6763”   NAME = “Test_SF_20090619.1”   Scope =“$ / MyProject”Recursive = True   评论=“Team Build创建的标签”   版本= “BuildServer3D143_66”   Child =“Replace”Files =“$ /”C:\ Program   文件\的MSBuild \微软\ VisualStudio的\ TeamBuild \ Microsoft.TeamFoundation.Build.targets(812,5,812,5):

     

错误:$ /中找不到匹配的商品   在你的工作区。

     

完成执行任务“标签” - 失败。

     

在项目中完成构建目标“CoreLabel”   “TFSBuild.proj” - 失败。

我认为这个错误是由于缺少源文件被复制到Build服务器引起的。

从构建日志中获取任务摘录:

  

任务“获取”

     

获取TeamFoundationServerUrl =“http:// TFSServer:8080 /”   BuildUri = “vstfs:///构建/编译/ 6768”   Force = True Overwrite = False   PopulateOutput = False Preview = False   Recursive = True Version =“C204806”   Workspace =“BuildServer3D143_66”

     

完成执行任务“获取”。

这是一个完整的版本。 GET中应该列出大约一千个文件。

一般信息

  • TFS 2008
  • Visual Studio 2008
  • 已建立的构建服务器(已 在去年运行构建)
  • 正在分支的项目是ASP.NET web stie(2.0 Framework)。

完整构建参数

  • / P:SkipClean =假
  • / P:SkipInitializeWorkspace =假
  • / P:ForceGet =真
  • / P:IncrementalBuild =假
  • / P:IncrementalGet =假

注意:我知道IncrementalBuild是redundent但我只是想确定。

问题:

  • 分支机构的构建是否有限制?
  • 任何想法为什么MSBuild无法从分支工作区中提取文件?

2 个答案:

答案 0 :(得分:1)

如果是CI,那么你最有可能进行增量获取。 TFS只会费心去获取自上次获取以来认为已经改变的文件 - 例如如果您从服务器中删除任何文件,它仍然会认为您有这些文件,因此它不会再次获取它们。在这种情况下,您需要在关闭增量属性的情况下运行构建一次,以便强制完全获取源。您可以通过使用以下命令覆盖“队列构建”对话框中MSBuild命令行框中的属性来执行此操作:

/p:IncrementalGet=false;ForceGet=true

另一种可能的想法是,Label任务会被您的分支混淆。可能是您的工作区设置不正确,因此请检查您是否正在映射所需的所有内容。

答案 1 :(得分:0)

在这种情况下我有两个问题。

首先,分支机构安全性未授予构建服务帐户的权限。我把分支机构限制在我们团队的技术领导和发布工程师。构建服务帐户也需要访问权限。让我感到惊讶的是,在搜索互联网时,我偶然发现了posting犯了同样错误的人。

第二个问题涉及更多。清理我的构建项目文件时,我删除了以下部分。

<SolutionToBuild Include="$(BuildProjectFolderPath)/../../_stage/MyProject/MySolution.sln">
        <Targets></Targets>
        <Properties></Properties>
</SolutionToBuild>

在我已经构建过至少一次的项目上工作正常,但如果这是一个新的构建,没有将源文件复制到构建服务器,那么就没有文件,构建会失败。

你们中的一些人可能想知道我的其他构建是否也在工作,毕竟他们不会有旧的构建文件。是的,但我确定了目标,完成了我真正关心的所有工作。所以SolutionToBuild有点儿了。