使用持续部署模型自动部署ASP.Net网站

时间:2012-11-09 20:46:55

标签: asp.net deployment web

对于我们公司的网站,我们以最准确的称为持续部署的方式开发(http://toni.org/2010/05/19/in-praise-of-continuous-deployment-the-wordpress-com -story /)

我们有一个Web场,每个站点都位于两台服务器上,用于故障转移。我们希望自动化部署到我们的开发服务器,测试服务器和prod服务器的过程。网站是ASP.Net网站(不是网络应用程序)所以我们不做构建,我们只是推送页面。我们通常根据许多变量将主站点每天更改为2到20次。这些更改可以是简单的文本/ html更改,以添加新的页面/功能。

目前我们使用TFS作为源代码控制,每个站点都是自己的存储库。我们没有分支机构,您需要在需要审核时手动将更改推送到开发人员(我们在本地计算机上开发),然后在签名后检查您的更改并将其推送到prod手动(这可确保源文件是什么实际上是prod和合并发生在那时)。显然,这里存在很多错误的空间,很少发生,因为开发人员会忘记关键文件并导致整个网站崩溃。

似乎大多数部署工具都是基于构建过程构建的,因为我们需要非常灵活地满足我们的业务需求,所以我们不太可能采用这种方法。我们认为,我们真正喜欢的是以下内容:

  1. Dev从源代码管理中获取最新版本的网站,这实际上是生产的副本
  2. Dev在他自己的盒子上工作。
  3. 当任务所有者准备好进行审核时,他会创建某种形式的变更集(检查更改或其他内容),然后工具会将该更改推送到dev
  4. 经过审核(以及进一步可能的更改)后,开发人员可以让该工具推送此任务的所有更改以进行测试(UAT)
  5. 在此签收后,更改会自动推送到prod并检入prod分支,或其他任何人,以获取
  6. 我们已经想到了在TFS中有三个代码分支的想法,但是我们不确定你是如何从一个分支(prod)拉出来但是检查一个dev分支(我们都不是TFS大师)。

    那么,其他人如何处理这种情况呢?我们不会将TFS作为源控制提供商,如果有什么东西可以做我们想要的,我们也不需要垂直解决方案,我们非常乐意插入不同的组件,只要它们可以插入,如果必须,甚至开发自己的。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我确信你可以用TFS做到这一点,但我已经成功完成了你用Mercurial所描述的内容,而且效果非常好。

使用Mercurial(我假设Git是相同的方式),你可以从一个仓库中拉出来,然后推送到另一个仓库。因此,你要从Prod中获取,进行更改,在本地提交,推送到Dev,然后在您满意的时候,将更改集推送到Prod(从Dev或Local,无关紧要)。

要开始使用,您需要一个Prod仓库,然后将其克隆到Dev repo中 - 这两个都在您的服务器上。在这一点上,他们是完全相同的。

Windows上的TortoiseHG使您能够轻松选择要与之同步的存储库。您可以将Prod和Dev repos保留在列表中,并决定在拉动或推动时使用哪一个。