自动部署资源

7

我知道我们需要通过单一用户操作来部署应用程序,但是我不知道

  1. 在.NET环境中使用哪些好的工具?
  2. 如何管理每个环境下的配置更改?

能否有人指点我一些有关持续集成的好资源。我想看到一些理论以及逐步实践指南。

编辑:
我现在需要自动化Web部署;但是,我也想学习如何为桌面应用程序完成此操作。


是什么样的环境 - 网页还是桌面? - matt b
6个回答

5
我写了一篇博客文章,可能会有所帮助:

Visual Studio Web Deployment Projects

。它已经有一年半的历史了,但讨论了一些新的(当时)VS项目模板以及来自IIS团队的命令行实用程序MSDeploy。它们听起来非常有前途,似乎非常适合针对多个构建配置、同步农场中的多个服务器,并在网站部署的实际输出方面拥有更多控制。也许现在这些技术也已经成熟了。

2
我们在Windows Installer XML方面取得了巨大的成功。基本上,您可以在XML中定义组成应用程序的组件,然后WiX将其转换为MSI包。文档相对较少,但提供的CHM文件结合搜索功能可以帮助您迈出很长的一步。
MSI包可以接受配置值的输入参数,并在应用程序部署后执行操作以操纵配置文件。例如,“msiexec /i MyCustomPackage.msi SqlServer=SomeSQLBox”可以部署Web应用程序并修改依赖SQL Box的配置条目。

1
MSI包适用于Windows应用程序,但对于Web应用程序,我认为更增量的更新过程更好。例如,VBP(如我的回复中所提到的)可以检测到仅有单个ASPX页面已更改并部署该页面,这可以节省潜在的停机时间、会话超时等问题。 - jeremcc

1

我写了一篇非常详细的博客帖子,介绍如何使用TeamCity和Web发布项目自动构建和部署:

http://www.diaryofaninja.com/blog/2010/05/09/automated-site-deployments-with-teamcity-deployment-projects-amp-svn

我随后添加了这个来展示FTP的添加

http://www.diaryofaninja.com/blog/2010/09/21/continuous-integration-tip-1-ndash-ftp-deployment

一个基本的流程非常简单:

  • 使用TeamCity构建服务器从我的SVN仓库下载
  • 我在构建服务器上构建并部署网站到本地文件夹
  • 我启动一个支持脚本的命令行FTP客户端,名为WinSCP,使用MSBUILD任务EXEC(http://winscp.net/)
  • 上传所有网站内容
  • 喝杯[插入饮料]

然后,我确保只部署我的SVN仓库的主干,并在分支中开发和测试所有内容,这样只有经过测试的内容才会被部署。将自动化测试添加到您的构建周期中,您就可以得到完美的匹配。

一些很棒的免费工具可供使用:


1

Visual Build Pro是Kinook公司开发的一款非常好用的一键部署工具。它易于使用且功能强大,我已经使用了多年。当然,还有NAnt,但我没有用过太多。

关于管理配置更改,我使用带有指示部署环境扩展名的多个配置文件进行管理,然后在我的构建脚本中将其重命名为一个简单的步骤。

例如,如果我要部署到测试环境,我可能会有一个名为Web.test.config的配置文件,该文件会被构建脚本自动重命名为Web.config。


0

我看到了两个不同的问题:

  • 对于部署问题:ClickOnce 部署应该可以解决。您只需在 VS.net 中通过“生成”菜单 > “发布”发布您的桌面应用程序。然后,VS.net 编译一个网页和一个 setup.exe。当使用 IE 或 Firefox 和 .net 3.5 SP1 的用户点击链接时,它会立即运行。ClickOnce 还为您处理更新,并提供了广泛的 API 进行开发。
  • 持续集成是一件非常不同的事情。我建议您搜索“CruiseControl.net”,并下载并尝试尽可能多的资源。它基本上是一个构建服务器,但您可以将其与 SVN、NUnit 等连接起来进行测试等。我不建议为这种易变产品购买书籍,最好是下载并尝试。

0

使用CruiseControl.NET进行持续集成解决方案。对于部署,我使用一个MSBuild项目文件。在顶部,我保留所有服务器配置文件。我通过参数将服务器属性传递给MSBuild,告诉MSbuild要使用哪些配置值,然后完成部署。唯一无法直接从CruiseControl进行部署的是我们的实时服务器。我们保留该命令行MSBuild,以便我们不会意外按下按钮,或者让访问CC.NET Web仪表板的人只是玩玩而已。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接