远程部署使用Cruise Control .Net和Nant

目前我们使用Cruise Control .Net和Nant为我们的ASP .NET网站构build部署包。 基本上这只是版本和文件,编译代码,然后创build一个zip文件。 然后由部署人员将桌面远程拖到目标机器上,下载zip文件,将其解压缩,然后将内容放入正确的IIS文件夹中。

我们希望自动化这个部署过程,所以我写了一个batch file来完成手动工作。 它使用我们的构build服务器中的wget下载zip文件,解压缩,停止iis,replaceweb文件,然后重新启动iis。 问题是这个文件必须在目标机器上运行,我想删除任何直接连接到目标机器的需求。

另一个要求是我们可以将同一个版本重新部署到不同的服务器。 因此,我想select一个以前的版本,并说“部署到服务器X”,而不必重build网站。 这是为什么当我们的Teset服务器已经testing过构build,我们想要部署完全相同的版本,即相同的zip文件到我们的生产服务器。

我已经考虑过使用psexec远程运行batch file,而这应该工作,这意味着每个部署者将需要在他们的机器上安装psexec,这是不理想的。 我想尽可能地隐藏部署的实现,只要简单点击一下就可以了。

我想理想的情况是以某种方式将部署阶段挂钩到我们的巡航控制仪表板中,该仪表板下拉列表中要部署的构build和服务器。 然后,我们可以select构build和目标服务器,并且构build服务器(Cruise Control已定义)将使用psexec将选定的构build部署到目标机器上。 但是,我不认为这是可能的。

有没有人有什么build议?

我会看webdeploy 。 最近它已经成为一个严肃的产品,你可以通过UI做任何事情。 这是一个链接到一个播客+博客文章谁是非常认真的零点击部署。

只需使用额外的执行步骤设置您的巡航控制作业,即可将微软的Webdeploy与正确的参数调用到正确的服务器。 然后,开发人员可以login到CC.NET,点击构build的“构build – 部署”作业的“force”button,然后运行该特定构build的webdeploy阶段。 我有一群他们在CC.net上运行就好了。 让我知道如果你想具体的configuration细节。