共用方式為


建立支援部署的建置定義

演講者:Jason Lee

如果要在 Team Foundation Server (TFS) 2010 中執行任何類型的生成,則需要在團隊專案中建立生成定義。 本主題描述了如何在 TFS 中建立新的建置定義,以及如何將網路部署作為 Team Build 建置過程的一部分進行控制。

本主題圍繞著一家名為 Fabrikam, Inc. 的虛構公司展開,針對其企業部署需求而設計了一系列教學課程。本教學課程系列使用範例解決方案 (連絡人管理員解決方案) 來代表具有現實複雜性的 Web 應用程式,其中包括 ASP.NET MVC 3 應用程式、Windows Communication Foundation (WCF) 服務,和資料庫專案。

這些教學課程的核心部署方法是基於「了解專案檔案」中所述的分割專案檔案方法,其中建置和部署流程由兩個專案檔案控制 - 一個包含適用於每個目標環境的建置指令,以及包含環境專屬的建置和部署設定的一個。 在建置時,環境專屬的專案檔案被合併到與環境無關的專案檔案中,以形成完整的建置指令集。

任務概述

建置定義是控制 TFS 中團隊專案的建構方式和時間的機制。 每個建置定義指定:

  • 您想要建置的內容,例如 Visual Studio 解決方案檔案或自訂 Microsoft Build 引擎 (MSBuild) 專案檔案。
  • 確定何時進行建置的標準,例如手動觸發程序、持續整合 (CI) 或閘控簽入。
  • Team Build 應將建置輸出傳送到的位置,包括 Web 套件和資料庫指令碼等部署工件。
  • 每個建構應保留的時間量。
  • 建構程序的各種其他參數。

注意

有關建置定義的更多資訊,請參閱「定義您的建置程序」。

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

當您觸發建置時,需要執行以下操作:

  • 首先,Team Build 應該要建構解決方案。 作為此程序的一部分,Team Build 將呼叫 Web 發佈管線 (WPP) 為解決方案中的每個 Web 應用程式專案產生 Web 部署套件。 Team Build 也將執行與解決方案相關的任何單元測試。
  • 如果解決方案建置失敗,Team Build 不應採取進一步的操作。 單元測試失敗應被視為建置失敗。
  • 如果解決方案建置成功,Team Build 應執行控制解決方案部署的自訂專案檔案。 在此過程中,Team Build 將呼叫 Internet 資訊服務 (IIS) Web 部署工具 (Web Deploy) 來在目標 Web 伺服器上安裝已封裝的 Web 應用程式,並將呼叫 VSDBCMD.exe 公用程式來在目標資料庫伺服器上執行資料庫建立指令碼。

這說明了這個程序:

說明了上述程序。

連絡人管理員範例解決方案包含一個自訂 MSBuild 專案檔案 Publish.proj,您可以從 MSBuild 或 Team Build 執行該檔案。 如「了解建置程序」中所述,此專案檔案定義將 Web 套件和資料庫部署到目標環境的邏輯。 該檔案包含的邏輯是,如果在 Team Build 中執行,則忽略建置和封裝程序,只留下部署任務執行。 這是因為當您以這種方式自動化部署時,通常希望在部署過程開始之前,確保解決方案成功建置並通過所有單元測試。

下一節將說明如何透過建立新的建置定義來實現此程序。

注意

此流程 (其中單一自動化流程建置、測試和部署解決方案) 可能最適合部署到測試環境。 對於預備和生產環境,您更有可能想要部署已在測試環境中驗證和驗證的先前版本的內容。 這種方法會在下一個主題「部署特定建置」中介紹。

誰執行此程序?

通常,TFS 管理員執行此程序。 在某些情況下,開發團隊負責人可能負責 TFS 中的團隊專案收集。 為了建立新的建置定義,您需要是包含您解決方案的團隊專案集合的專案集合建置管理員群組的成員。

為 CI 和部署建立建置定義

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

要為 CI 和部署建立建置定義

  1. 在 Visual Studio 2010 的「Team Explorer」視窗中,展開團隊專案節點,以滑鼠以滑鼠右鍵按一下「建置」,然後按一下「新建置定義」。

    在 Visual Studio 2010 的「Team Explorer」視窗中,展開團隊專案節點,以滑鼠以滑鼠右鍵按一下「建置」,然後按一下「新建置定義」。

  2. 在「一般」標籤上,為建置定義指定名稱 (例如 DeployToTest) 和選擇性描述。

  3. 在「觸發程序」標籤上,選擇要觸發新建置的條件。 例如,如果您想要建置解決方案並在開發人員每次簽入新程式碼時部署到測試環境,請選擇「持續整合」。

  4. 在「建置預設值」標籤上的「將建置輸出複製到以下放置資料夾」方塊中,鍵入放置資料夾的通用命名慣例 (UNC) 路徑 (例如,\TFSBUILD\Drops)。

    在「建置預設值」標籤上的「將建置輸出複製到以下放置資料夾」方塊中,鍵入放置資料夾的通用命名慣例 (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」視窗中的建置定義。 這將開啟「Build Explorer」標籤。

若要查看建置的進度和結果,無論是手動觸發還是自動觸發,請按兩下「Team Explorer」視窗中的建置定義。

從這裡,您可以對失敗的建置進行疑難排解。 如果您按兩下單一建構,您可以查看摘要資訊並按一下查看詳細的記錄檔案。

如果您按兩下單一建構,您可以查看摘要資訊並按一下查看詳細的記錄檔案。

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

注意

在您向建置伺服器授予目標環境中所需的任何權限之前,執行部署邏輯的建置可能會失敗。 有關更多資訊,請參閱「設定 Team Build 部署的權限」。

監控建置程序

TFS 提供了廣泛的功能來幫助您監控建置程序。 例如,當建置完成時,TFS 可以向您傳送電子郵件或在工作列通知區域中顯示警報。 有關更多資訊,請參閱「執行和監視建置」。

結論

本主題描述如何在 TFS 中建立建置定義。 建置定義是針對 CI 設定的,因此只要開發人員將內容簽入團隊項目,建置程序就會運作。 生成定義執行自訂 MSBuild 專案文件,以將 Web 套件和資料庫指令碼部署到目標伺服器環境。

為了使自動化部署在建置程序中成功,您需要為建置服務帳戶在目標 Web 伺服器和目標資料庫伺服器上授予適當的權限。 本教學課程的最後一個主題「設定 Team Build 部署的權限」說明如何辨識和設定從 Team Build 伺服器進行自動部署所需的權限。

深入閱讀

有關建立建置定義的更多資訊,請參閱「建立基本建置定義」和「定義建置程序」。 有關對建置進行排隊的更多指導,請參閱「將建置排入佇列」。