自訂 Lab Management 工作流程
您可以使用實驗室預設範本 (LabDefaultTemplate) 搭配實驗室環境,將建置應用程式、部署新組建至實驗室環境,以及在新組建上執行測試等作業自動化。 如需如何使用實驗室預設範本的詳細資訊,請參閱 建立適用於 SCVMM 環境的建置-部署-測試工作流程和 建立適用於標準環境的建置-部署-測試工作流程。 不過,每個建置、部署和測試流程都可能因為不同的需求而稍有不同。 例如,某個工作流程可能需要從一般組建位置複製測試二進位檔,而另一個工作流程則需要從暫存位置複製測試二進位檔。 或者,某個工作流程可能需要將實驗室環境儲存在 SCVMM 程式庫中,讓測試人員能夠部署它,而另一個工作流程則完全不儲存實驗室環境。 由於實驗室預設範本是以 Windows Workflow 4.0 為基礎,可以完全擴充和自訂,因此您可以依照您的特定需求自訂 LabDefaultTemplate。 本主題將描述自訂實驗室預設範本的一般步驟。
需求
- Visual Studio Ultimate, Visual Studio Premium, Visual Studio Test Professional
在以下情節中,自訂實驗室預設範本會很實用:
Specify the location of test binaries other than the build location.
Support application deployments that require a restart after installation.
Read source control files.
Access a build drop location using the build agent account.
Access other locations using the lab service account.
工作流程自訂的基本概念
工作流程自訂涉及三個重要的概念:
範本:範本會定義工作流程中活動或步驟的順序。 範本是以 Windows Workflow Foundation 4.0 為基礎,在原始檔控制中儲存為 .xaml 檔案。 若要將範本載入工作流程編輯器,請按兩下 .xaml 檔案。 在編輯器中,您將能夠看到決定工作流程的各種活動和順序。 然後您可以使用變數搭配不同範圍、條件邏輯、迴圈等撰寫範本,就如同任何其他程式語言一樣。 Windows Workflow Foundation 可讓您視需要自訂實驗室預設範本。
活動:活動是工作流程的建置組塊,實驗室預設範本會使用許多活動。 您可以在 [Team Foundation Lab Management 活動] 標題下的 [工具箱] 中找到其他活動。 若要使用工作流程中的活動,請從工具箱拖曳活動到 Visual Studio 工作流程編輯器中範本的適當位置。 您可以查看活動的屬性來判斷輸入和輸出參數。 如需 Lab Management 活動的詳細資訊,請參閱 Lab Management 工作流程活動。 如果產品隨附的活動無法充分滿足您的需求,您可以加入新活動。
引數:您可以為所需的使用者輸入建立新的輸入引數,並將這些值傳遞至活動。 選擇 [工作流程編輯器] 視窗底部的 [引數] 索引標籤,查看現有的引數。 如果您建立新的引數,它們會出現在組建定義中 [流程] 索引標籤的 [建置流程參數] 區段中。
當您檢閱下列兩個需要自訂的範例時,請思考這些概念。 第一個範例示範如何變更範本中現有活動的 In 引數,第二個範例示範如何從工具箱加入新活動。 這些範例應能提供足夠的內容,讓您根據需求自訂實驗室預設範本。
開始自訂之前
您必須先完成一些一般步驟,才能開始自訂實驗室預設範本。 下圖說明這些步驟。
若要準備自訂
在 [Team Explorer] 中,按兩下 Team 專案的 [原始檔控制] 節點。
在 [原始檔控制總管] 中,展開原始檔控制樹狀結構,然後尋找 $/<Project_Name>/BuildProcessTemplates 資料夾。
將這個資料夾對應至本機資料夾,例如 C:\Sources。
以滑鼠右鍵按一下 [LabDefaultTemplate.11.xaml] 檔案,然後選擇 [取得最新的版本]。
建立 LabDefaultTemplate.11.xaml 檔案的複本,然後指定新名稱,例如 LabDefaultTemplate_customize.11.xaml
將這個新檔案加入至原始檔控制。
按兩下這個新檔案。 檔案就會在 [Visual Studio 工作流程編輯器] 中開啟。
接下來,您將自訂新建立的實驗室預設範本複本。
指定組建置放位置以外的測試二進位檔位置的自訂
預設工作流程範本 LabDefaultTemplate 假設測試二進位碼檔的位置與組建置放位置相同。 不過,在您的情況下,測試程式碼可能不會與產品程式碼一起建置。 如果發生這種情況,您可能想要自訂範本,以便從不同位置挑選測試二進位檔。 此自訂包含三個步驟,如下圖所示。
定義工作流程 In 引數以指定測試二進位檔路徑
若要定義 In 引數
在工作流程編輯器視窗底端,按一下 [引數] 索引標籤。
選擇 [建立引數]。 在文字方塊中,輸入引數的名稱,例如 TestBinariesLocation。 在 [方向] 下拉式清單中,選擇 [In]。 在 [引數類型] 下拉式清單中,選擇 [String]。
將引數值傳遞給 ExecuteRemoteTestRun 活動
這個活動會建立遠端測試回合,等候直到測試回合完成,然後以測試回合統計資料來更新組建資訊。
若要傳遞引數值
在工作流程編輯器中,捲動至 [正在執行測試] 活動。 雖然活動的顯示名稱是「正在執行測試」,活動型別是 ExecuteRemoteTestRun。
以滑鼠右鍵按一下活動,然後選擇 [屬性]。 [屬性] 視窗隨即在右下角開啟,並顯示這個活動的 In 和 Out 引數。 這個活動的其中一個 In 引數是 TestDirectory,它會設定測試二進位檔位置的路徑。
按一下 [屬性] 視窗中的 [TestDirectory]。 按一下資料列末端的省略符號 (...)。
在 [運算式編輯器] 中輸入 TestBinariesLocation,然後選擇 [確定]。
在 [檔案] 功能表上選擇 [儲存 LabDefaultTemplate_customize.11.xaml]。
在 [原始檔控制總管] 功能表列上選擇 [簽入] 圖示。
您現在可以使用自訂的 .xaml 檔案建立新的組建定義。 新的 In 引數 TestBinariesLocation 會出現在組建定義中 [流程] 索引標籤的 [其他] 區段中,您可以在那裡指派值。
支援需要在部署後重新啟動機器的應用程式安裝程式的自訂
實驗室預設範本不會在您部署應用程式之後重新啟動實驗室環境。 您可能想要自訂此範本以支援需要在部署後重新啟動的應用程式。 如果您在實驗室環境中手動部署應用程式,則只會重新啟動安裝應用程式所在的電腦。 Visual Studio Lab Management 不支援在環境中的虛擬機器上執行作業。 因此,若要重新啟動一部電腦,則必須重新啟動實驗室環境中的所有電腦。
警告
請確定您的部署指令碼永遠不會重新啟動電腦。如果發生這種情況,執行部署指令碼的組建代理程式與組建控制器連接會中斷,工作流程可能會停止。
您需要先將三個活動加入至 LabDefaultTemplate,才能在部署新組建後重新啟動虛擬機器:
停止環境
啟動環境
等候虛擬機器啟動,然後繼續工作流程的其餘部分。
停止環境
您可以從 [工具箱] 將 [StopLabEnvironment] 活動拖曳至工作流程範本,並初始化活動變數,藉以將停止環境活動加入至預設工作流程範本。
若要停止環境
在工作流程編輯器中,捲動至顯示名稱為 [應用程式部署成功] 的活動。
在 [檢視] 功能表上選擇 [工具箱]。 工具箱隨即在左側開啟,並顯示 [Team Foundation Build 活動] 清單。 捲動此活動清單,直到您看到 [Team Foundation Lab Management 活動] 清單。
在工具箱中選擇 [StopLabEnvironment] 活動。 將它拖曳至工作流程編輯器中,放在 [應用程式部署成功] 活動前面。
以滑鼠右鍵按一下此活動,然後按一下 [屬性]。 屬性視窗就會顯示這個活動的 In 和 Out 引數。 請注意工作流程已有稱為 LabEnvironmentUri 的變數,它參考環境 URI。
選擇 [變數] 索引標籤。 變數的清單隨即顯示。
在 LabEnvironmentUri 資料列的 [預設] 資料行中,按兩下 [輸入 VB 運算式]。 在文字方塊中,輸入 LabEnvironmentUri。 編輯器會顯示參數的任何現有用法,您可以從該清單中選取值,不需要輸入。
啟動環境
您可以從 [工具箱] 將 [StartLabEnvironment] 活動拖曳至工作流程範本,並初始化活動變數,藉以將啟動環境活動加入至實驗室預設範本。
若要啟動環境
在工具箱中選擇 [StartLabEnvironment] 活動。 將它拖曳至工作流程編輯器中,放在 [應用程式部署成功] 活動前面,但在 [StopLabEnvironment] 活動後面。
以滑鼠右鍵按一下此活動,然後按一下 [屬性]。 屬性視窗就會顯示這個活動的 In 和 Out 引數。 同樣地,請注意工作流程已有稱為 LabEnvironmentUri 的變數,它參考環境 URI。
選擇 [變數] 索引標籤。 變數的清單隨即顯示。
在 LabEnvironmentUri 資料列的 [預設] 資料行中,按兩下 [輸入 VB 運算式]。 在文字方塊中,輸入 LabEnvironmentUri。 編輯器會顯示參數的任何現有用法,您可以從該清單中選取值,不需要輸入。
等候機器重新啟動,然後繼續工作流程的其餘部分。
您可以從 [工具箱] 將 [Delay] 活動拖曳至工作流程範本,並初始化活動變數,藉以加入等候虛擬機器啟動的時間。 這個活動位於 [工具箱] 的 [基本] 索引標籤上。
若要等候虛擬機器啟動
在 [工具箱] 中選擇 [基本] 索引標籤。
按一下 [Delay] 活動。 將它拖曳至工作流程編輯器中,放在 [應用程式部署成功] 活動前面,但在 [StartLabEnvironment] 活動後面。
以滑鼠右鍵按一下此活動,然後按一下 [屬性]。 屬性視窗就會顯示這個活動的 In 和 Out 引數。 請注意工作流程已有稱為 Duration 的變數,它參考等候時間。
在 [屬性] 視窗中選擇 [持續時間],然後選擇省略符號 (…)。
在 [運算式編輯器] 中,以下列格式輸入等候時間 (例如 10 分鐘):TimeSpan.FromMinutes(10)。
在修改這個範本之後,將它簽入原始檔控制中,然後用它來建立新組建定義,以部署需要在安裝後重新啟動的應用程式。
讀取原始檔控制檔案的自訂
如果您建立自訂活動,然後在工作流程範本中使用它們,請確定透過實驗室服務帳戶通訊的組建代理程式可以存取這些活動。 因為這些活動必須簽入原始檔控制系統中做為自訂組件,所以您必須確定實驗室服務帳戶有簽入自訂組件之路徑的讀取權限。 如需實驗室服務帳戶的詳細資訊,請參閱 如何:設定實驗室服務帳戶。您可以使用 tf permissions 命令,將使用權限授與實驗室服務帳戶。 例如,若要將 $/MyProject/CustomAssemblies 路徑的讀取權限授與實驗室服務帳戶 mydomain\labAccount,執行命令如下:C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE>tf permission /user:mydomain\labAccount /collection:http://aseemb-tfs11:8080/tfs/Collection0 /allow:read $/MyProject/CustomAssemblies
使用組建代理程式帳戶來存取組建置放位置的自訂
執行工作流程的組建代理程式會使用實驗室服務帳戶存取組建置放位置。 如果您要讓組建代理程式改用組建代理程式帳戶,可以自訂實驗室預設範本。 在範本中,尋找 RunDeploymentScript 活動,它會執行部署指令碼。 這個活動公開 SharedLocationForNetUse 屬性,它定義應該透過實驗室服務帳戶存取的位置。 <mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="[BuildLocation]" />若要以組建代理程式帳戶 (而不使用實驗室服務帳戶) 存取組建置放位置,請刪除範本中的此屬性,或將此屬性的值設定為 null ({x:Null}),如下列範例所示:mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="{x:Null}" />
使用實驗室服務帳戶來存取其他位置的自訂
如果在實驗室服務帳戶下執行的組建代理程式需要讀取組建置放位置以外的其他位置,您可以將 SharedLocationForNetUse 屬性的值從預設值 [BuildLocation] 變更為所需位置。 例如,若要在實驗室服務帳戶下執行的組建代理程式存取 \\contoso\scripts 目錄,此屬性應有下列值:<mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="\\contoso\scripts" />