我正在为TFS开发几个自定义构建脚本,我想知道是否有开发,测试和部署TFS构建脚本的最佳实践。TFS构建脚本的SDLC管理
您是否设置了与生产构建服务器分离的开发和QC环境?还有其他方法可以将脚本与其他构建过程分离开来,以便构建正在开发的脚本不会干扰“生产”构建?
团队建立喜欢创建工作项目,更新工作项目和添加标签作为构建过程的一部分,我宁愿不会发生“测试”构建。
JMM这里
我正在为TFS开发几个自定义构建脚本,我想知道是否有开发,测试和部署TFS构建脚本的最佳实践。TFS构建脚本的SDLC管理
您是否设置了与生产构建服务器分离的开发和QC环境?还有其他方法可以将脚本与其他构建过程分离开来,以便构建正在开发的脚本不会干扰“生产”构建?
团队建立喜欢创建工作项目,更新工作项目和添加标签作为构建过程的一部分,我宁愿不会发生“测试”构建。
JMM这里
看看我的回答是:Modular TeamBuilds
你可以把提取出来成随机配备在所有建立一个共同的MSBuild文件的核心功能。此外,所有这些文件都是您更广泛的分支机构的一部分,因此它们无需任何额外的工作即可直接参与您的预先存在的SDLC。因此:
为了扩大#2,让我们以“生产”与“测试”版本为例。您只需打开生产版本中的标签等功能。所以你可以从TFSBuild.proj中删除SkipLabel属性(如果在那里定义了TFSBuild.Common.targets),而是将它设置在TFSBuild.Production.targets和TFSBuild.Test.targets中 - 当然使用两个不同的值。
正如前面提到的问题所述,TFSBuild.proj是控制构建的其余部分如何运行的主要msbuild文件。这里是我的样子:
<?xml version="1.0" encoding="utf-8"?>
<!-- DO NOT EDIT the project element - the ToolsVersion specified here does not prevent the solutions
and projects in the SolutionToBuild item group from targeting other versions of the .NET framework.
-->
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<!-- Import configuration for all MyCompany team builds -->
<Import Project="MyCompany.TeamBuild.Common.targets"/>
<!-- Import build-specific configurations -->
<Import Condition="'$(BuildDefinition)'=='Dev - quick'" Project="MyCompany.TeamBuild.Quick.targets" />
<Import Condition="'$(BuildDefinition)'=='Main - full'" Project="MyCompany.TeamBuild.Full.targets" />
<Import Condition="'$(BuildDefinition)'=='Main - quick'" Project="MyCompany.TeamBuild.Quick.targets" />
<Import Condition="'$(BuildDefinition)'=='Release - full'" Project="MyCompany.TeamBuild.Full.targets" />
<!-- This would be much cleaner as we add more branches, but msbuild doesn't support it :(
Imports are evaluated declaratively at parse-time, before any tasks execute
<Target Name="BeforeEndToEndIteration">
<RegexReplace Input="$(BuildDefinition)" Expression=".*\s-\s" Replacement="">
<Output TaskParameter="Output" PropertyName="BuildType" />
</RegexReplace>
</Target>
<Import Condition="$(BuildType)==full" Project="MyCompany.TeamBuild.Full.targets" />
<Import Condition="$(BuildType)==quick" Project="MyCompany.TeamBuild.Quick.targets" />
-->
</Project>
通过这样做类似的东西,你可以确保所有从Dev分支版本是“快”建立(这对你意味着没有标签,等等),都建立发布分支是“完整”版本,并且从主分支构建可以取决于用户从Visual Studio/TSWA启动的构建定义。我自己,我有“快速”建立与持续集成和“全”建设每晚运行。
我看到你发布模块化团队构建,虽然这是构建构建脚本的极好方法,但我正在寻找关于开发构建脚本的物理过程的帮助。例如,如何防止将不在“生产”中的构建脚本记录为生产版本。如果那有意义的话。 jMM – jMM 2009-07-13 16:46:24