建立支援部署的組建定義

作者:Jason Lee

如果您想要在 Team Foundation Server 中執行任何類型的組建, (TFS) 2010,您必須在小組專案中建立組建定義。 本主題描述如何在 TFS 中建立新的組建定義,以及如何在 Team Build 中控制 Web 部署。

本主題構成一系列教學課程的一部分,以名為 Fabrikam, Inc 的虛構公司企業部署需求為基礎。本教學課程系列使用範例解決方案連絡人 管理員解決方案來代表具有實際複雜層級的 Web 應用程式,包括 ASP.NET MVC 3 應用程式、Windows Communication Foundation (WCF) 服務和資料庫專案。

這些教學課程的核心部署方法是以 瞭解專案檔中所述的分割專案檔方法為基礎,其中建置和部署程式是由兩個專案檔控制,一個包含適用于每個目的地環境的組建指示,另一個包含環境特定的組建和部署設定。 在建置階段,環境特定的專案檔會合並到與環境無關的專案檔中,以形成一組完整的建置指示。

工作概觀

組建定義是控制 TFS 中小組專案建置的方式和時機的機制。 每個組建定義都會指定:

  • 您想要建置的專案,例如 Visual Studio 方案檔或自訂Microsoft Build Engine (MSBuild) 專案檔。
  • 決定何時應該進行組建的準則,例如手動觸發程式、持續整合 (CI) 或閘道簽入。
  • Team Build 應該傳送組建輸出的位置,包括 Web 套件和資料庫腳本等部署成品。
  • 每個組建應該保留的時間量。
  • 建置程式的各種其他參數。

注意

如需組建定義的詳細資訊,請參閱 定義您的建置程式

本主題將示範如何建立使用 CI 的組建定義,以便在開發人員簽入新內容時觸發組建。 如果建置成功,建置服務會執行自訂專案檔,以將解決方案部署至測試環境。

當您觸發組建時,必須執行下列動作:

  • 首先,小組組建應該建置解決方案。 在此程式中,Team Build 會叫用 Web 發佈管線 (WPP) ,以針對解決方案中的每個 Web 應用程式專案產生 Web 部署套件。 小組組建也會執行與解決方案相關聯的任何單元測試。
  • 如果解決方案建置失敗,Team Build 應該不會採取任何進一步的動作。 單元測試失敗應該視為組建失敗。
  • 如果方案建置成功,Team Build 應該執行可控制解決方案部署的自訂專案檔。 在此程式中,Team Build 會叫用 Internet Information Services (IIS) Web Deployment Tool (Web Deploy) ,以在目的地 Web 服務器上安裝封裝的 Web 應用程式,並且會叫用VSDBCMD.exe公用程式,在目的地資料庫伺服器上執行資料庫建立腳本。

這說明此程式:

說明上述程式。

連絡人管理員範例解決方案包含自訂 MSBuild 專案檔Publish.proj,您可以從 MSBuild 或 Team Build 執行。 如 瞭解建置程式中所述,此專案檔會定義將 Web 套件和資料庫部署至目標環境的邏輯。 檔案包含邏輯,它會在 Team Build 中執行時省略建置和封裝程式,只留下要執行的部署工作。 這是因為當您以這種方式自動化部署時,您通常會想要確保解決方案成功建置,並在部署程式開始之前通過任何單元測試。

下一節說明如何藉由建立新的組建定義來實作此程式。

注意

此程式—其中單一自動化程式會建置、測試及部署解決方案—可能最適合部署至測試環境。 針對預備和生產環境,您更可能想要部署先前組建中已驗證並驗證過的內容。 下一個部署 特定組建主題將說明此方法。

誰執行此程式?

一般而言,TFS 系統管理員會執行此程式。 在某些情況下,開發人員小組負責人可能會負責 TFS 中的小組專案集合。 若要建立新的組建定義,您必須是包含解決方案之 Team 專案集合的 Project Collection Build Administrators 群組成員。

建立 CI 和部署的組建定義

下一個程式描述如何建立 CI 觸發的組建定義。 如果建置成功,則會使用自訂 MSBuild 專案檔中的邏輯來部署方案。

建立 CI 和部署的組建定義

  1. 在 Visual Studio 2010 的 [ Team Explorer] 視窗中,展開您的 Team 專案節點,以滑鼠右鍵按一下 [ 組建],然後按一下 [ 新增組建定義]。

    在 Visual Studio 2010 的 [Team Explorer] 視窗中,展開您的 Team 專案節點,以滑鼠右鍵按一下 [組建],然後按一下 [新增組建定義]。

  2. 在 [ 一般 ] 索引標籤上,為組建定義指定名稱 (例如 DeployToTest) 和選擇性描述。

  3. 在 [ 觸發程式] 索引標籤上,選取您要觸發新組建的準則。 例如,如果您想要在每次開發人員簽入新程式碼時建置解決方案並部署到測試環境,請選取 [持續整合]。

  4. 在 [ 建置預設值] 索引 標籤的 [ 將組建輸出複製到下列投寄資料夾 ] 方塊中,輸入 drop 資料夾的通用命名慣例 (UNC) 路徑 (,例如 \TFSBUILD\Drops) 。

    在 [建置預設值] 索引標籤的 [將組建輸出複製到下列下拉式資料夾] 方塊中,輸入 drop 資料夾的通用命名慣例 (UNC) 路徑 (,例如 \TFSBUILD\Drops) 。

    注意

    此置放位置會根據您設定的保留原則來儲存數個組建。 當您想要將部署成品從特定組建發佈至預備或生產環境時,您會在這裡找到它們。

  5. 在 [ 進程 ] 索引標籤的 [ 建置進程檔案 ] 下拉式清單中,讓 DefaultTemplate.xaml 保持選取狀態。 這是新增至所有新小組專案的預設建置程式範本之一。

  6. [建置進程參數] 資料表中,按一下 [ 要建置的專案 ] 資料列,然後按一下 省略號 按鈕。

    在 [建置進程參數] 資料表中,按一下 [要建置的專案] 資料列,然後按一下省略號按鈕。

  7. 在 [ 要建置的專案] 對話方塊中,按一下 [ 新增]。

  8. 流覽至方案檔的位置,然後按一下 [ 確定]。

    流覽至方案檔的位置,然後按一下 [確定]。

  9. 在 [ 要建置的專案] 對話方塊中,按一下 [ 新增]。

  10. [類型為的專案] 下拉式清單中,選取 [MSBuild 專案檔]。

  11. 流覽至您控制部署程式之自訂專案檔的位置,選取檔案,然後按一下 [ 確定]。

    流覽至您控制部署程式之自訂專案檔的位置,選取檔案,然後按一下 [確定]。

  12. [ 要建置的專案 ] 對話方塊現在應該會顯示兩個專案。 按一下 [確定]。

    [要建置的專案] 對話方塊現在應該會顯示兩個專案。按一下 [確定]。

  13. 在 [ 進程 ] 索引標籤的 [ 建置進程參數 ] 資料表中,展開 [ 進階] 區段。

  14. [MSBuild 引數]資料列中,新增任何要建置之專案的 MSBuild 命令列引數。 在連絡人管理員解決方案案例中,需要這些引數:

    /p:DeployOnBuild=true;DeployTarget=Package;
       TargetEnvPropsFile=EnvConfig\Env-Dev.proj
    

    在 [MSBuild 引數] 資料列中,新增任何要建置之專案的 MSBuild 命令列引數。

  15. 在此範例中:

    1. 當您建置連絡人管理員解決方案時,需要 DeployOnBuild=trueDeployTarget=package 引數。 這會指示 MSBuild 在建置每個 Web 應用程式專案之後建立 Web 部署套件,如 建置和封裝 Web 應用程式專案中所述。
    2. 當您建置Publish.proj檔案時,需要TargetEnvPropsFile引數。 此屬性會指出環境特定組態檔的位置,如 瞭解建置程式中所述。
  16. 在 [ 保留原則] 索引標籤上,設定您想要視需要保留的每個類型組建數目。

  17. 按一下 [檔案]

將組建排入佇列

此時,您已建立至少一個新的組建定義。 您定義的建置程式現在會根據您在組建定義中指定的觸發程式來執行。

如果您已將組建定義設定為使用 CI,您可以使用兩種方式來測試組建定義:

  • 請簽入小組專案的一些內容,以觸發自動建置。
  • 手動將組建排入佇列。

手動排入組建佇列

  1. 在 [ Team Explorer] 視窗中,以滑鼠右鍵按一下組建定義,然後按一下 [ 排入新組建佇列]。

    在 [Team Explorer] 視窗中,以滑鼠右鍵按一下組建定義,然後按一下 [排入新組建佇列]。

  2. 在 [ 佇列建置 ] 對話方塊中,檢閱組建屬性,然後按一下 [ 佇列]。

    在 [佇列建置] 對話方塊中,檢閱組建屬性,然後按一下 [佇列]。

若要檢閱組建的進度和結果,不論其是手動還是自動觸發,請按兩下 [ Team Explorer ] 視窗中的組建定義。 這會開啟 [ 建置總管 ] 索引標籤。

若要檢閱組建的進度和結果,不論其是手動還是自動觸發,請按兩下 [小組總管] 視窗中的組建定義。

您可以從這裡針對失敗的組建進行疑難排解。 如果您按兩下個別組建,您可以檢視摘要資訊,然後按一下詳細記錄檔。

如果您按兩下個別組建,您可以檢視摘要資訊,然後按一下詳細記錄檔。

您可以使用此資訊來針對失敗的組建進行疑難排解,並在嘗試另一個組建之前解決任何問題。

注意

執行部署邏輯的組建可能會失敗,直到您已將目的地環境中所需的任何許可權授與組建伺服器為止。 如需詳細資訊,請參閱 設定 Team Build 部署的許可權

監視建置程式

TFS 提供廣泛的功能,可協助您監視建置程式。 例如,TFS 可以在建置完成時,傳送電子郵件或在工作列通知區域中顯示警示。 如需詳細資訊,請參閱 執行和監視組建

結論

本主題描述如何在 TFS 中建立組建定義。 組建定義已設定為 CI,因此每當開發人員簽入小組專案的內容時,建置程式就會執行。 建置定義會執行自訂 MSBuild 專案檔,以將 Web 套件和資料庫腳本部署至目標伺服器環境。

為了讓自動化部署在建置程式中成功,您必須將適當的許可權授與目標 Web 服務器和目標資料庫伺服器上的組建服務帳戶。 本教學課程的最後一個主題: 設定 Team Build 部署的許可權,說明如何識別及設定 Team Build 伺服器自動部署所需的許可權。

深入閱讀

如需建立組建定義的詳細資訊,請參閱 建立基本組建定義定義建置程式。 如需佇列組建的詳細資訊指引,請參閱 將組建排入佇列