【G】开源的分布式部署解决方案 - 导航
右键项目 -> 发布
这个大家应该再熟悉不过,在部署前有个预览界面可以看本次更新到底更新哪些文件。
既然它可以预览部署结果,那其实它部署也不会完全覆盖,而是采取部分覆盖的方式,并提供了增、删、改的实际数量。
这都要依赖一个叫做 web Deploy 的项目。 传送门
当然,web deploy 功能绝不仅仅如此,包括打包、备份、还原、更新数据库等。
在此不多做普及,提到了它的优点,自然要支持它。所以本项目支持原始 + Web Deploy 两种部署方式。
不推荐用 IIS 的 Web 平台安装程序来下载 Web Deploy,我们使用的 Web Deploy 3.6 版本,结果运行的时候是乱码状态。
建议官网自己下载英文版,完整安装。
项目编辑界面的部署流程中的第七个部署流程,选择部署方式为 Web Deploy。并填写宿主属性 Json。格式可以点击宿主属性前面的问号。
注意:因为我们配合 Jenkins 使用,所以 zip 包是自己压缩的。一定要从根目录压缩,不能包含上一层文件夹。否则 Web Deploy 比对时会删除网站下所有文件!!!
压缩命令格式:"C:\Program Files (x86)\7-Zip\7z.exe" a -r $deploy\WebsiteName.zip C:\ProjectInstance\WebsiteName\*
如你的网站目录为 C:\ProjectInstance\WebsiteName ,则你的压缩文件解压后应该是可以直接解压到 C:\ProjectInstance\WebsiteName,而不是 C:\ProjectInstance,这里跟本项目支持的原始部署方式是有本质区别!
- namespace G.Infrastructure.Plugin.DeployHost.IIS.DeployModes
- {
- public class WebDeployDeployWorker : IDeployWorker
- {
- public voidDeploy(stringdeployFilePackagePath,string jsonHostProperty)
- {
- varwebDeployHostProperty = JsonConvert.DeserializeObject(jsonHostProperty);
- Liststring,string,string>> lstCommand =newListstring,string,string>>();
- lstCommand.Add(newTuple<string,string,string>(
- @"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe",
- $@"-verb:sync -source:package=""{deployFilePackagePath}"" -dest:contentpath=""{webDeployHostProperty.WebsiteName}""",
- "总更改数"));
- lstCommand.ForEach(command =>
- {
- ProcessHelper.Run(command.Item1, command.Item2, command.Item3);
- });
- }
- }
- }
Web Deploy 部署调用的 msdeploy.exe,并通过 package 命令操作 zip 发布到网站名称相同的内容路径。
此方式已不推荐使用,原理就是解压覆盖目录,并修改 web.config 文件触发最后修改,保证网站以最新状态启动。
目前最新版本为 0.0.0.2(Beta),升级执行脚本 G\SQLScripts\0.0.0.2(Beta).sql
来源: http://www.cnblogs.com/doddgu/p/g_doc_web_deploy.html