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

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

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

我们希望自动化此部署过程,因此我编写了一个批处理文件来完成手动工作。它使用 wget 从我们的构建服务器下载 zip 文件,解压缩它,停止 iis,替换 web 文件,然后再次重新启动 iis。问题是这个文件必须在目标机器上运行,我想消除直接连接到目标机器的任何需要。

另一个要求是,我们可以将相同的构建重新部署到不同的服务器。因此,我想选择一个以前的构建,然后说“将其部署到服务器 X”,而根本不需要重建网站。这适用于构建已在我们的 Teset 服务器上测试过并且我们想要将完全相同的构建(即相同的 zip 文件)部署到我们的生产服务器的情况。

我考虑过使用 psexec 远程运行批处理文件,虽然这应该可行,但这意味着每个部署者都需要在他们的机器上安装 psexec,这并不理想。我想尽可能隐藏部署的实现,让它成为一个简单的点击练习。

我猜最理想的情况是将部署阶段以某种方式挂接到我们的 Cruise Control 仪表板中,仪表板会下拉要部署到的构建和服务器列表。然后我们可以选择构建和目标服务器,构建服务器(安装 Cruise Control 的位置)将使用 psexec 将选定的构建部署到目标机器上。但是,我认为这是不可能的。

有没有人有什么建议?

答案1

我会看看网络部署。它最近已经成为一款严肃的产品,你可以做任何可以通过 UI 完成的事情。下面是关联来自一位非常重视零点击部署的人的播客+博客文章。

答案2

只需设置巡航控制作业并添加一个额外的执行步骤,该步骤会使用正确的参数调用 Microsoft 的 Webdeploy 并将其发送到正确的服务器。然后,开发人员可以登录 CC.NET 并点击“强制”按钮以执行将要构建的“构建和部署”作业,然后为该特定构建运行 webdeploy 阶段。我在 CC.net 上成功运行了许多这样的作业。如果您需要特定的配置详细信息,请告诉我。

相关内容