TFS - Build & Release ASP.NET Website

-- Pageviews

TFS - ASP.NET Releases

最近測試 TFS 2017,本來只是想做公司內部的 NuGet Server,順便就玩一下 Build & Release ASP.NET Website 越玩越有心得,把遇到的問題筆記一下。

Build 定義

建立 ASP.NET 專案的 Build 定義,步驟如圖:
TFS - Create ASP.NET Build - 1 選擇 Source 來源: TFS - Create ASP.NET Build - 2 如果有用到 NPM、Grunt、Gulp之類的,可以順便加進來:
(我是用 NPM,所以用 NPM為例) TFS - Create ASP.NET Build - 3 TFS - Create ASP.NET Build - 4 TFS - Create ASP.NET Build - 5 TFS - Create ASP.NET Build - 6

要不要忽略錯誤繼續往下,依需求設定。

TFS - Create ASP.NET Build - 7

點左邊可以看到每個 Build Step 的執行結果,因為 Unit Test 沒有過,所以顯示黃色驚嘆號標示。
但不影響 Build 的成品。

Build 成品

Build 完的 Output console 可以看到成品在 Server的位置,可以登到 Server 去看成品內容,或者從 TFS 的 UI 介面來看,如下: TFS - Build Artifacts

成品竟然沒有包含 Website 內容,只有 Test Project 的 Binary!

打開 Build 定義修改 Build solution 的 MSBuild Arguments,如下:

1
/p:ReleaseOnBuild=True /p:ReleaseDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=$(build.artifactstagingdirectory)\website

TFS - MSBuild Arguments 再 Build 一次就可以看到有 website 的資料夾,裡面就是 Website Build 出來的內容了。
TFS - Website Build Artifacts

Release 定義

建立 ASP.NET Website 的 Release 定義,步驟如圖:
TFS - Create ASP.NET Release - 1 TFS - Create ASP.NET Release - 2 TFS - Create ASP.NET Release - 3 TFS - Create ASP.NET Release - 4

此範例是 Deploy 到實體機器的指定目錄,該目錄是 IIS 的 Website 位置。
Release 成功後,就可以看到網站被更新了。

Release 結果

每次的 Release 都會被保留,預設是保留 30 天,至少保留 3 個版本。如下: TFS - ASP.NET Releases