SDLC管理CHINESE对于TFS构建脚本(SDLC Mangement for TFS Buil

2019-06-25 13:20发布

我在开发TFS几个自定义生成脚本和我想知道是否有用于开发,测试和部署TFS构建脚本的最佳做法的过程。

你安装程序开发和从生产构建服务器单独QC环境? 是否有其他方法来隔离从构建过程的其余部分开发脚本,以便在开发构建脚本不“生产”影响构建过程?

团队建设喜欢创建工作项,更新工作项,并添加标签作为构建过程中,我宁愿没有发生的“测试”版本的一部分。

JNN

Answer 1:

点击这里,查看我的回答: 模块化TeamBuilds

你可以把提取出来成随机配备在所有建立一个共同的MSBuild文件的核心功能。 此外,所有这些文件都是你的更广泛的分支结构的一部分,所以他们直接参与到你的已经存在的SDLC没有任何额外的工作。 从而:

  1. 如果你让你的构建脚本风险的变化,让他们在“开发”或“专用”分支,就像你与任何其他风险的变化。
  2. 如果你想有一个构建定义,这只是快速验证,集性能,如SkipLabel,SkipWorkItemCreation等在通过构建定义导入的* .targets档案造假。

为了扩大对#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启动。 我自己,我有“快”建立建立持续集成和“全”建立夜间运行。



文章来源: SDLC Mangement for TFS Build Scripts