我工作场所的所有部署都是手动的。我一直在寻找使用MSBUILD和MS Web Deploy自动化所有这些的方法。我设法得到的工作如下:
全部来自一个MSBUILD脚本。
这与手动过程略有不同,因为手动部署新版本的网站时,会将其放入日期时间戳记的新文件夹中。然后IIS指向新文件夹。
我的问题是,我将如何做最后两个动作?即写入位于比当前网站指向的文件夹高一级的特定文件夹,然后重新指向新文件夹IIS。
答案 0 :(得分:0)
Web Deploy不直接支持此功能。值得庆幸的是,它确实提供了runCommand提供程序,这是您最终将要使用的。
%windir%\ system32 \ inetsrv \ appcmd.exe是您用来交换站点目录的实用程序。可以在此处找到使用示例:How do I change the physical path of web site in IIS7 with APPCMD?
创建一个调用appcmd的脚本。此脚本将始终位于目标服务器上。您可以决定将其作为站点部署的一部分包含在内,也可以将其从旧目录中移动到新目录中。 " web部署用户"目标计算机上需要具有相应的凭据和访问权限才能创建目录。
在MSBUILD脚本中,在部署之前,请调用目标服务器上的脚本。 E.g。
msdeploy.exe -verb:sync -source:runcommand =" C:\ path \ to \ wwwroot \ bin \ script.bat" -dest:auto,wmsvc = https://contoso.com:8172/msdeploy.axd,username=%username%,password=%password%
然后照常部署
注意: 尽量避免这种完全部署的方式。如果您希望对站点进行快照,请考虑部署到程序包(zip),然后将该程序包部署到目标服务器。回滚应该通过部署旧软件包来处理,而不是通过重新映射到旧目录来处理。