【问题标题】:How to use MS Web Deploy to deploy to remote server in a datetime stamped folder如何使用 MS Web Deploy 部署到带有日期时间戳的文件夹中的远程服务器
【发布时间】:2014-04-18 10:06:57
【问题描述】:

我工作场所的所有部署都是手动的。我一直在寻找使用 MSBUILD 和 MS Web Deploy 自动化所有这些的方法。我设法得到的工作如下:

  • 构建/编译解决方案
  • 运行数据库迁移
  • 使用 ms web deploy 直接部署到网站

全部来自一个 MSBUILD 脚本。

这与手动过程略有不同,因为当手动部署新版本的网站时,它会被放入带有日期时间戳的新文件夹中。然后 IIS 指向新文件夹。

我的问题是,我将如何执行最后 2 项操作?即写入比当前网站指向的文件夹更高级别的特定文件夹,然后重新指向新文件夹 IIS。

【问题讨论】:

    标签: deployment msbuild web-deployment


    【解决方案1】:

    Web Deploy 不直接支持此功能。值得庆幸的是,它确实提供了 runCommand 提供程序,这是您最终将使用的。

    %windir%\system32\inetsrv\appcmd.exe 是用于交换站点目录的实用程序。可以在此处找到使用示例:How do I change the physical path of web site in IIS7 with APPCMD?

    1. 创建一个调用 appcmd 的脚本。此脚本将始终位于您的目标服务器上。您可以决定将其作为站点部署的一部分包含在内,或者将其从旧目录移到新目录中。目标计算机上的“网络部署用户”需要具有适当的凭据和访问权限才能创建目录。

    2. 在您的 MSBUILD 脚本中,在部署之前,调用目标服务器上的脚本。例如

      msdeploy.exe -verb:sync -source:runco​​mmand="C:\path\to\wwwroot\bin\script.bat" -dest:auto,wmsvc=https://contoso.com:8172/msdeploy.axd,username=%username%,password=%password%

    3. 然后照常部署

    注意: 尽量避免这种完全部署的方式。如果您希望为您的站点创建快照,请考虑部署到一个包 (zip),然后将该包部署到您的目标服务器。回滚应通过部署较旧的包来处理,而不是通过重新指向较旧的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2014-12-13
      相关资源
      最近更新 更多