我在开发TFS几个自定义生成脚本和我想知道是否有用于开发,测试和部署TFS构建脚本的最佳做法的过程。
你安装程序开发和从生产构建服务器单独QC环境? 是否有其他方法来隔离从构建过程的其余部分开发脚本,以便在开发构建脚本不“生产”影响构建过程?
团队建设喜欢创建工作项,更新工作项,并添加标签作为构建过程中,我宁愿没有发生的“测试”版本的一部分。
JNN
我在开发TFS几个自定义生成脚本和我想知道是否有用于开发,测试和部署TFS构建脚本的最佳做法的过程。
你安装程序开发和从生产构建服务器单独QC环境? 是否有其他方法来隔离从构建过程的其余部分开发脚本,以便在开发构建脚本不“生产”影响构建过程?
团队建设喜欢创建工作项,更新工作项,并添加标签作为构建过程中,我宁愿没有发生的“测试”版本的一部分。
JNN
点击这里,查看我的回答: 模块化TeamBuilds
你可以把提取出来成随机配备在所有建立一个共同的MSBuild文件的核心功能。 此外,所有这些文件都是你的更广泛的分支结构的一部分,所以他们直接参与到你的已经存在的SDLC没有任何额外的工作。 从而:
为了扩大对#2位,让我们把你的“生产”的例子与“试验”的基础之上。 你只需要打开的功能,如在生产标签的基础之上。 所以,你会从TFSBuild.proj(也TFSBuild.Common.targets如果它其中所述)删除SkipLabel财产,而不是将其设置为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启动。 我自己,我有“快”建立建立持续集成和“全”建立夜间运行。