G.系列導航
微軟官方部署方式
右鍵項目->發布
這個大家應該再熟悉不過,在部署前有個預覽界面可以看本次更新到底更新哪些文件。
既然它可以預覽部署結果,那其實它部署也不會完全覆蓋,而是采取部分覆蓋的方式,並提供了增、刪、改的實際數量。
這都要依賴一個叫做 Web Deploy 的項目。 傳送門
當然,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 void Deploy(string deployFilePackagePath, string jsonHostProperty) { var webDeployHostProperty = JsonConvert.DeserializeObject<WebDeployHostProperty>(jsonHostProperty); List<Tuple<string, string, string>> lstCommand = new List<Tuple<string, string, string>>(); lstCommand.Add(new Tuple<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