每日构建
1 编译机器前期预备工作
1.1 必须安装VS2005,否则无法编译
1.2 必须在编译机器上安装Team Build 组件,该安装程序的目录在TFS (DVD)安装光盘的bb/目录下。如果不安装该组件,系统会抛出错误信息“Build Machine is not reachable”。
2 创建一个Build Type
2.1 在Team Explorer中,找到需要编译的工程文件夹,在该文件夹中找到Team Builds,并右键单击同时选择New Build Type,此时你将看到如下的对话框。
2.2 在上面的对话框中输入新的Team Type名称和描述,然后点击Next。
2.3 在workspace 下拉框中选择你将要编辑的解决方案所在的工作站点。在下面出现的列表中选中需要编译的选项,它们按照从上倒下的排列顺序来逐一编译没一项,如果某一项的先决条件项在该项的下面出现,那么就得通过右边的向上或向下箭头调整它们之间的顺序。完成该步骤后,点击Next。
2.4 根据需要配置,其中Configurations下拉列表中有两项:
l Debug
l Release
Platform下拉列表中有:
l X86
l X84
l Itanium
l Win32
l AnyCPU
建议选择debug、Win32。配置好后,点击Next。
2.5 如果存在单元测试,同时希望对代码的覆盖率进行分析,可以勾选Run Test项,然后根据需要在下拉列表中选择项目,如果要选择多项,必须在该向导配置好后,在对应的配置文件中逐一添加。点击Next.
2.6 在最后一个导向窗体中是对前面配置的总结,确认无误后,点击Finish。
3 编辑配置文件
3.1 打开版本控制souce control
3.2 逐一展开${Portfolio Project}/Team Build Configurations/{Build Type Name}/TeamBuild.proj。
3.3 右键单击TeamBuild.proj,选择Check Out For Edit。
3.4 双击TeamBuild.proj项。
3.5 关于每一项的具体含义可以参考http://msdn2.microsoft.com/library/ms181718(en-us,vs.80).aspx
3.6
4 运行Team Type
4.1 在新建的TeamType上单击右键,选择Build {Team Project Name}。弹出Build Configuration对话框。
4.2 你可以根据需要调整该对话框中的值,如果不调整,那么它将保持原有配置的值。配置完成后,点击OK。
5 查看编译配置文件
5.1 如果编译的过程存在错误,那么你可以在日志文件Buildlog.log中查看错误的具体原因。该文件位于${Portfolio Project}/{Build Type Name}/BuildConfiguration/Buildlog.log。
6 查看统计结构
6.1 在Team Explore 面板中,找到新建的TeamType,同时双击该项。
6.2 左边窗体出现如下界面:
6.3 双击要查看的项,出现如下界面:
现逐一解释每一项的含义:
l Summary :关于该BuildType的详细信息。直接点击Drop location 或Log ,我们可以查看编译过程中的日志记录和编译后的结果。
l Compilation and code analysis errors and warnings :对编译后的代码正确与否进行统计和分析。
l Test results :对代码中的单元测试结果进行统计和分析。
l Code coverageresults : 单元测试的覆盖率。
l Associatedworkitems:
l Associatedchangesets:对修改的部分进行统计。
l Build process and custom task errors:对编译过程中出现的问题进行提示和分析。如要看错误具体出在哪一步,可以直接查看编译日志。
常见的问题及解答
1 系统提示“Build machine is not reachable”
答:你没有在编译机器上安装Team Build。该安装程序的目录在TFS (DVD)安装光盘的bb/目录下。
2 系统不能找到对应的编译路径。
答:你在本地设置的路径结构必须和版本库中设置的路径一致,否则MSBulid命令在解析路径的时候就会报错:“不存在××路径”或“找不到××路径”。
3 重复设置了工作站点(workspace)。
答:如果存在该问题,在编译日志(Buildlog.login)文件中会有如下的提示:
Using "CreateWorkspaceTask" task from assembly "C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Hatteras.MSBuild.dll".
Task "CreateWorkspaceTask"
C:/Program Files/MSBuild/Microsoft/VisualStudio/v8.0/TeamBuild/Microsoft.TeamBuild.targets(86,5): error MSB4018: The "CreateWorkspaceTask" task failed unexpectedly.
Microsoft.VisualStudio.Hatteras.Client.MappingConflictException: The path D:/ColwebAutomatedBuild/COLWEB2/Just Build/sources is already mapped in workspace TFBUILDSVR_COLWEB2_Just Build.
at Microsoft.VisualStudio.Hatteras.Client.InternalCache.CheckForMappingConflicts(WorkspaceInfo workspace)
at Microsoft.VisualStudio.Hatteras.Client.InternalCache.CheckForMappingConflicts(Workspace workspace)
at Microsoft.VisualStudio.Hatteras.Client.Client.CreateWorkspace(Workspace workspace)
at Microsoft.VisualStudio.Hatteras.Client.SourceControl.CreateWorkspace(String name, String owner, String comment, WorkingFolder[] mappings)
at Microsoft.VisualStudio.Hatteras.MSBuild.CreateWorkspaceTask.Execute()
at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup projectPropertiesAvailableToTask)
Done executing task "CreateWorkspaceTask" -- FAILED.
特别是在公司现有的设置环境下,必然会出现以上的问题,分析如下:
3.1 公司为每台机器分配了一个固定的帐号,例如(DH03机器为xiangchunzhou),公司在设置的时候,是用TFSSETUP登陆后,在WEB服务器上新建帐号,然后再逐一分配给每个开发人员,以便统一管理。
3.2 编译机器要想在客户端顺利的编译版本库中的项目文件,就必须有足够的权限。所以开发机器不得不也用TFSSETUP来登陆,并重新使用一个新的workspace来映射即将编译的项目文件,从而导致了不同的workspace映射到了同一个目录文件D:/ColwebAutomatedBuild/COLWEB2/Just Build/sources。这就违背了workspace的唯一映射性。
3.3 解决方法:
3.3.1 删除引起冲突的workspace,其步骤如下
3.3.1.1 用公司指定的用户名登陆
3.3.1.2 打开IDE编辑器
3.3.1.3 File | Source Control | workspace,弹出如下对话框:
3.3.1.4 将引起冲突的项删除。(可以点击Edit按钮查看该workspace的映射关系。)
3.3.1.5 注销该帐户,以TFSSETUP重新进入,并按照上面的步骤删除该帐户下引起冲突的Workspace。
3.3.1.6 重新编译该项目。