2012-01-11 54 views
6

我做了很多的研究这个问题,但找不到任何端到端的解决方案,以实现“一次构建和部署许多”使用TFS 2010TFS 2010和“一次构建,多次部署”

基本上我在想的是有一个构建定义,它将构建一个包含多个要部署的项目(Web应用程序+数据库项目+ Web服务+报告)的解决方案,将输出放在drop文件夹中,然后根据质量和版本手动决定将所有项目部署到各种环境(qa,ua,staging,production)。

我知道我可以修改构建过程模板,在构建之后立即部署多个项目,如“构建主要部署到QA”,“构建主要并部署到UA”等,可能基于变更集或标签,但这意味着每次都会建设。 我想要的更像是一个仪表板,它允许部署团队部署在质量保证,UA环境中测试的确切构建,并在获得绿灯以将其部署到生产环境中之后。当然这意味着配置文件应该在部署时相应地更新。我也正在考虑定义一些实际上不会构建任何东西的构建定义,而是将现有构建(基于版本)部署到特定的环境中,但至少可以说有点奇怪。

回答

2

接近我们使用的程度,我们已经构建了用于实际构建的模板,并部署了将输出部署到各种计算机的模板(这些模板可以设置为在预定时间运行,例如每晚投放到QA等,或者按需提供,如UAT/live)。模板从默认模板进行了很大的修改,我们只需从构建中获取详细信息(或者在某些情况下,您可以采用最新的构建,如烟雾测试环境),例如放置位置。

您需要在您部署的计算机上可以处理部署的代理,但是您可以根据需要安装尽可能多的代理。

作为一个例子,你可以建立一个构建你的应用程序到一个EXE,以及一个模板,该EXE并运行它在你的目标(使用InvokeProcess)。如果您需要将相同的东西部署到另一个环境中,则只需使用相同的放置位置,中提琴!

你有什么听起来并不奇怪,这是有道理的。

+0

好的,定义一个不会构建的构建对我来说仍然看起来很奇怪,但只要我不是一个人在这条路上,我就会这样。还有一个问题,你如何选择正确/想要的构建?根据版本,您可以在“build drop”位置选择正确的文件夹? 谢谢你的回答! – 2012-01-11 19:12:57

+0

我们只保留我们需要避免磁盘空间问题(因此任何QA)的构建,然后将“build”构建的drop文件夹传递到构建中用于模板中定义的部署定义的参数中,传递给InvokeProcess任务以在所需的代理/服务器上运行。 – 2012-01-12 08:39:38

+0

这似乎是好的。再次感谢您的回答 – 2012-01-12 15:41:50

0

Daniel的答案几乎是获得像TeamBuild这样的构建系统来处理部署的标准方式。这感觉有点奇怪,因为你正在将工具弯曲到另一个目的。它绝对可以工作。

另一种方法是获得与TFS/TeamBuild集成的纯粹部署工具。跨环境的部署是很自然的,但是你有两个工具可以管理。

+0

我想知道为什么具有自己部署模板的部署定义不属于TFS 2010的一部分。它不会是“太难添加功能”。和一个仪表板来管理一切... – 2012-01-12 18:21:54

+0

我不会感到震惊,看到这个蠕变的基本版本,但一旦你开始寻找生产型部署,你有不同的责任分离问题,引入负载平衡器和其他基础设施部分,与其他项目的协调等等。这些东西将远离开发者中心的TFS。 – EricMinick 2012-02-02 18:55:20

1

我知道这是一个迟到的反应,但事情自2012年以来发生了变化。微软现在有一个Release Management offering现在是从头开始设计,以便“构建一次,部署许多”。修改构建过程模板总是很痛苦。