Build TFS 2012自动部署过程

Build TFS 2012自动部署过程,build,nuget,autodeploy,Build,Nuget,Autodeploy,我正在努力改进我们的一般自动化过程。我们使用VS2012和TFS2012 以下是我在签入我们的CI分支时希望发生的事情: 构建 按照生成定义设置中的配置生成选定的项目/解决方案 生成可用于部署网站的部署包(无需再次重建整个项目) 生成一个稍后可以发布的nuget包(无需再次重建整个项目,我需要DLL来匹配通过索引创建的符号,以便我们可以调试它们) 测试-当且仅当构建成功时 运行所有配置的单元测试 部署-当且仅当所有单元测试都通过时,这是为了防止破坏性更改进入我们的开发环境 从(1.2)中获取

我正在努力改进我们的一般自动化过程。我们使用VS2012和TFS2012

以下是我在签入我们的CI分支时希望发生的事情:

  • 构建
  • 按照生成定义设置中的配置生成选定的项目/解决方案
  • 生成可用于部署网站的部署包(无需再次重建整个项目)
  • 生成一个稍后可以发布的nuget包(无需再次重建整个项目,我需要DLL来匹配通过索引创建的符号,以便我们可以调试它们)
  • 测试-当且仅当构建成功时
  • 运行所有配置的单元测试
  • 部署-当且仅当所有单元测试都通过时,这是为了防止破坏性更改进入我们的开发环境
  • 从(1.2)中获取部署包并将其发布到预期的环境中(希望使用发布配置文件和转换进行配置)
  • 发布-当且仅当所有单元测试都通过时
  • 从(1.3)中获取nuget软件包,并将其发布到我们的私人nuget图库中
  • 我不需要整个过程的完整教程(尽管那会很棒),但需要更多关于如何集成它的内容

    例如:

    • 我应该在包装器项目上使用msbuild吗
    • 如何处理在TFS构建服务器上构建时创建包的问题
    • 如何强制执行“当且仅当所有单元测试都通过”约束
    • 作为构建的一部分,在发布后执行部署/发布的最佳/最简单的方法是什么
    这是我们想要使用的过程,任何帮助都会意识到这一点,我们非常感谢。 我相信还有很多人对如何开始整合这种风格的流程感兴趣

    如果相关的话,大多数解决方案都混合了共享dll项目、网站/API和单元测试。我希望这个过程的一个原因是能够将它们拆分,并将我们的大型DLL模块化为更小的独立单元,这将在没有这种自动发布机制的情况下成为不可管理的ATM

    谢谢, 加里

    按照生成定义设置中的配置生成选定的项目/解决方案。生成一个可以 用于部署网站(无需重建整个 (再次进行项目)

    这是开箱即用的,将部署配置文件添加到项目中,称之为“发布” 将以下内容添加到MSBuild参数

    /p:DeployOnBuild=true;PublishProfile=发布

    只要发布配置文件与MSBuild参数中的内容相匹配,就不必使用Release

    这将生成部署文件作为构建(MSDEPLOY)的一部分

    参见代码丛上的Nugetter

    测试-当且仅当生成成功时运行所有配置的单元 测试

    应该是现成的,但是如果编译不成功,您可以更改生成模板以使生成失败,如果这更适合您的需要

    部署-如果且仅当所有单元测试都通过时,这是为了防止 打破进入开发环境的更改需要部署 从(1.2)中打包并发布到预期环境 (希望使用发布配置文件和转换进行配置) 发布-当且仅当所有单元测试都通过时,从 (1.3)并将其发布到我们的私人nuget画廊


    请参见上文列出的codeplex上的Nugetter

    对于上述要求,您应该使用自定义活动在BuildProcessTemplate中添加更多步骤以实现特殊功能。
    Generate a nuget package that can later be published (without having to rebuild the entire project again, i need the dlls to match the symbols created from indexing so we can debug them)