[TFS 2015] 實作 Build vNext + CopyFile 自動部署內部網站

以往手動部署網站我習慣用 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

Image result for microsoft+mvp+logo