最近測試 TFS 2017,本來只是想做公司內部的 NuGet Server,順便就玩一下 Build & Release ASP.NET Website 越玩越有心得,把遇到的問題筆記一下。
Build 定義
建立 ASP.NET 專案的 Build 定義,步驟如圖:
選擇 Source 來源: 如果有用到 NPM、Grunt、Gulp之類的,可以順便加進來:
(我是用 NPM,所以用 NPM為例)
要不要忽略錯誤繼續往下,依需求設定。
點左邊可以看到每個 Build Step 的執行結果,因為 Unit Test 沒有過,所以顯示黃色驚嘆號標示。
但不影響 Build 的成品。
Build 成品
Build 完的 Output console 可以看到成品在 Server的位置,可以登到 Server 去看成品內容,或者從 TFS 的 UI 介面來看,如下:
成品竟然沒有包含 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 |
再 Build 一次就可以看到有 website 的資料夾,裡面就是 Website Build 出來的內容了。
Release 定義
建立 ASP.NET Website 的 Release 定義,步驟如圖:
此範例是 Deploy 到實體機器的指定目錄,該目錄是 IIS 的 Website 位置。
Release 成功後,就可以看到網站被更新了。
Release 結果
每次的 Release 都會被保留,預設是保留 30 天,至少保留 3 個版本。如下: