在火墙后面的服务器上的Asp.Net MVC应用程序的部署策略

时间:2014-12-18 11:27:03

标签: asp.net-mvc firewall webdeploy continuous-deployment

我们的一个客户绝对坚持使用自己的服务器,但拒绝为自动WebDeploy打开IP端口(不要问为什么以及如何 - 大型企业)。通常我们会在TeamCity中安装WebDeploy软件包。但不是这次 - (

我们已经看过Octopus Deploy,希望在他们的服务器上安装一个触手并让它在我们的服务器上进行轮询,但是Octopus似乎并没有这样做。

我们认为我们必须编写某种服务来轮询新版本的软件,如果可用,请进行部署。但这似乎是很多工作。我想知道这是否存在,我们可以购买这个系统。

为只能启动连接但无法接受连接的服务器执行自动部署的方法有哪些?

5 个答案:

答案 0 :(得分:4)

Octopus Deploy应该可行。它支持轮询模式。

在此处详细了解:http://docs.octopusdeploy.com/display/OD/Polling+Tentacles

答案 1 :(得分:1)

为什么不安装"更新程序Windows服务"使用后台智能传输服务(BITS)进行下载,就像数十亿台Windows PC和服务器一样?

答案 2 :(得分:1)

编写PowerShell脚本以下载和部署包应该是非常简单的:

$wc=new-object system.net.webclient
$wc.UseDefaultCredentials = $true
$wc.downloadfile("your_url","your_file")
msdeploy.exe -verb:sync -source:package=<your_file> -dest:metakey=lm/w3svc/1 > DWSpackage6.log

我省略了检查新版本的代码。假设您有另一个URL来检索最新版本号,那也很简单。

测试完脚本后,只需使用计划任务从客户端的服务器中重复运行它。

答案 3 :(得分:1)

如果您可以在其服务器上安装TeamViewer,则可以使用其VPN功能执行任何操作。但是,您必须使用TeamViewer手动连接,启用VPN,然后才能使用WebDeploy。不知道这是否符合您的自动部署&#34;方案(我猜你可能没有被授权首先安装TeamViewer。)

我认为其他VPN解决方案可以正常工作,只要从它们的侧面启动连接即可​​。开发一个打开连接的脚本比完整的部署工具更简单吗?

答案 4 :(得分:1)

我建议签出Microsoft Release Management,它使用在目标服务器上运行的Deployment Agent来提取部署包。我上个月一直在使用它,到目前为止我对它很满意。

我认为当您有多个环境(比如测试,验收和生产)以大致相同的方式部署到MS Release Management时,您将获得最大的收益,并且可能希望不同的人批准每个阶段。 我在MS Release Management上写了几篇关于installingdeploying a release的博客文章,这些帖子应该说明如何使用MS Release Management。
您甚至可以将MS Release Management与TFS集成,以便TFS构建自动导致部署到环境。

如果您只有要发布的生产环境,并且不想要MS Release Management提供的所有额外功能,您还可以考虑使用Powershell DSC(所需的状态配置)。 默认情况下,它使用“推送”模式,但它也可以在pull mode中运行,使用Web服务或文件共享从中提取部署包(即.mof文件)。

- 编辑:我刚刚阅读了有关持续交付的意见,我肯定会建议您首先尝试MS发布管理,特别是如果您已经拥有licenses