使用 Microsoft MSBuild 发布目标构建管道?

Building a pipeline using Microsoft MSBuild publishing targets?

提问人:gregpakes 提问时间:12/10/2013 最后编辑:quetzalcoatlgregpakes 更新时间:3/1/2014 访问量:1235

问:

我正在尝试创建一个.我很好奇我是否能够利用现有的 Microsoft 发布 msbuild 目标,或者我是否需要从头开始编写自己的目标。Build Pipeline

我有一个大型网站项目(不是 Web 应用程序)。

生成管道如下所示:

  1. 签入发生
  2. CI触发器构建调用01 Commit Stage
  3. 01 Commit Stage自动触发02 Prepare for deployment
  4. 02 Prepare for deployment自动触发03 UAT

以下是我希望在每个阶段发生的事情:

  • 01 提交阶段
    • 所有项目文件均已生成
    • 运行单元测试
    • 该网站贯穿整个AspNet_Compiler
  • 02 准备部署
    • 使用上一个生成的输出
    • 然后,通过AspNet_Merge.exe运行输出,以将编译的 dll 合并到单个版本控制程序集中。
    • 将输出项目存储为可部署
  • 03 UAT系列
    • 上一步中的工件将部署到 QA 进行测试。

我的问题是:

In the second build, how do I skip the build target and simply point the existing Microsoft publishing pipeline to the existing output? Or would I just be better building my own set of MSBuild targets to do exactly what I need?

到目前为止,我对建立自己的管道感到非常高兴,但不禁觉得我错过了一些 MS 的优点。

TFS MSBuild Web 部署 发布配置文件 msbuild-wpp

评论

0赞 KMoraz 12/10/2013
你没有提到你正在使用什么构建过程。它是 TFS 的默认生成模板吗?MSBuild 脚本?您使用的是哪个版本的 TFS?
0赞 gregpakes 12/11/2013
我说的是标准的 msbuild 发布管道 (Microsoft.WebSite.Publishing.targets)。TFS 的版本无关紧要。
0赞 MrHinsh - Martin Hinshelwood 12/11/2013
TFS 的版本非常重要,因为除非必要,否则永远不会在 MSBuild 中生成发布管道。在 2005/2008 年,您别无选择,只能忍受 MSBuild 的痛苦。在 2010/2012 中,您可以使用 Windows 工作流和开箱即用的 LabDefaultBuild 部署到 Hyper-V 或标准环境。在 2013 年,MSFT 添加了一个内置的发布管道,其中包含审批和验证步骤。
0赞 gregpakes 12/11/2013
我认为在问题中包含第 3 步引起了混淆 - 问题不在于部署或发布。无论有没有新的TFS 2013版本管理内容,我的问题仍然存在。我的问题是:在步骤 2 中 - 如何将现有的 Microsoft MSBuild 管道指向一些以前构建的项目,从而跳过目标?这样做的原因是我希望构建速度非常快,并提供单元测试的快速反馈。然后,我想要另一个构建来完成所有打包等准备部署。原因:AspNetMerge 需要 10 分钟。build01 Commit Stage
0赞 MrHinsh - Martin Hinshelwood 12/12/2013
同样,我建议您不要将其作为 MSBuild 的一部分来执行。MSBuild 专为一件事而设计,而且只为一件事而设计......编译代码。多年来,它已经通过其他螺栓固定功能进行了增强,但这并不意味着它应该用于其他事情。我建议您切换到 Windows 工作流进行业务流程。哦。。。,然后从网站移动到 Web 应用程序。您的大多数问题都会消失......

答:

1赞 MrHinsh - Martin Hinshelwood 12/11/2013 #1

如果使用的是 TFS 2013,则可以使用内置的发布管理工具来定义要部署的环境、服务器和组件。然后,您可以获得完全的可跟踪性、批准和部署计划,以便通过环境进行二进制升级。

http://www.visualstudio.com/en-us/explore/release-management-vs.aspx

但是,如果您使用的是 TFS 2012,则可能需要更多帮助,因为如果他装箱,则没有发布管理工具。但是,您可以将基于工作流的构建系统与LabDefaultTemplate一起使用,以对环境进行部署和测试。如果你不想这样做,我建议你改用OctopusDeploy。

http://nakedalm.com/release-management-with-team-foundation-server-2012/

如果你在TFS 2005/2008中,那么你就卡住了。唯一的支持是使用 MSBuild 的痛苦和痛苦来执行部署或使用第三方工具。老实说,在这个位置上,由于产品的年龄,我建议升级到 2012 年,然后是 2013 年。使用最新的工具...你仍然可以使用 VS.old 进行生成和创建,但你将获得新的业务流程和工具。

评论

0赞 gregpakes 12/11/2013
谢谢你。在上面的评论中,我解释了为什么这不能完全回答我的问题,但这都是非常有用的见解。TFS 2013 部分在我进入发布管理方面时肯定会很有用(我们目前使用 2012)。我尝试过 OctopusDeploy,但遗憾的是,我的网站的 NuGet 打包需要 40 多分钟。这使得它不行。我已经在推特上就此事与他们联系了几次,但遗憾的是我还没有得到回应。由于网站的大小,我认为我面临着一些额外的问题,这使它变得复杂。
0赞 MrHinsh - Martin Hinshelwood 12/12/2013
您的网站有多大?如果你有很多媒体,它可能应该在CDN上?
0赞 gregpakes 12/12/2013
该站点非常大,但遗憾的是它被部署到许多站点。它通常仅在内部使用,因此 CDN 是不可能的。此外,大部分内容都是代码,所以 CDN 也无济于事。就像我说的,我们不是你通常的商店,有1个生产基地等。