以往手動部署網站我習慣用 Web Deploy,就是在網站應用程式,按右鍵→Publish。
但,我在目前的 TFS Build vNext 版本找不到這樣的部署步驟(只有 Azure),於是花了一天的時間試出堪用的替代步驟,所以嚴格來說這不算是真正的 WebDeploy ,目標環境也不需要安裝 WebDeploy(WMSvc)。
若有更好的做法,也請你跟我說
伺服器環境:
- Windows 2012 Datacenter x64 中文版
- TFS 2015 Update 2 中文版
設定步驟:
Visual Studio 組建
Build 的時候產生 WebDeploy 的 Package 檔案,我把它放在 $(Build.BinariesDirectory),由於這個設定已經和預設的資料夾路徑不一樣了(有興趣的可以用預設的設定跑一次,觀察結果),所以接下來的步驟都必須要做修改,如下圖:
/p:OutDir=$(Build.BinariesDirectory) /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true
建置完成後,在 _work\1\b 底下一個 _PublishedWebsites 資料夾,如下圖:
Visual Studio 測試
搜尋測試 dll,並運行測試
$(Build.BinariesDirectory)\*test*.dll;-:**\obj\**
下面這個我不太知道這要怎麼弄 :D
複製檔案
根據 MsBuild Arguments 所產生出來的結果設定,我要把 _PublishedWebsites 底下的資料夾複製到 ArtifactStagingDirectory,如下圖:
- 資料來源:$(Build.BinariesDirectory)\_PublishedWebsites\your web site project folder
- 內容:**\*
- 目標資料夾:$(Build.ArtifactStagingDirectory)
發行組建成品
這個用預設的就可以了,用來把成品放到 TFS ,如下圖:
成品 ,如下圖:
Windows 電腦檔案複製
最後,將 ArtifactStagingDirectory 的檔案放到遠端電腦的網站資料夾,這會需要遠端電腦的權限,如下圖:
- 來源:$(Build.ArtifactStagingDirectory)
- 電腦:remote computer
- 系統管理員登入:your domain\account id
- 密碼:$(Password)
- 目的資料夾:\\remote computer\web site folder
為了妥善保管密碼,我在這裡使用了變數並且上鎖,開鎖後內容會被清掉,這功能不錯 :D
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET