逐步解說:定義自訂工作流程來從 Team Foundation Build 部署資料庫
更新:2010 年 7 月
在您使用 Team Foundation Build 來部署資料庫專案之前,必須先定義設定為部署資料庫的自訂工作流程。 您必須定義自訂工作流程,然後才能在組建定義中使用該工作流程定義。 您可以使用 Windows Workflow 4.0 來定義工作流程。 就算您不是專家,也可以遵循這個簡單的程序。
若要完成這個逐步解說,您必須完成下列工作:
必要的使用權限
若要執行下列程序,您必須將 [編輯組建定義] 權限設定為 [允許]。 如需詳細資訊,請參閱 Team Foundation Server 使用權限。
建立建置流程範本
建立建置流程範本最簡單的方式就是複製預設範本。 您可以在建立組建定義時執行該動作。 一般而言,您會完成組建定義。 因為本逐步解說的重點是放在自訂建置流程範本上,所以本逐步解說不會處理定義新組建的其他詳細資料。 如需如何針對資料庫專案定義組建的詳細資訊,請參閱 HOW TO:使用 Team Foundation Build 部署變更。
若要建立自訂範本
在 [Team 總管] 中,按一下您想要建立自訂工作流程的 Team 專案。
按一下 [建置] 功能表上的 [新增組建定義]。
按一下 [流程] 索引標籤以查看下圖。
按一下 [顯示詳細資料],然後按一下 [新增]。
[新增建置流程範本] 對話方塊隨即出現。
按一下 [複製現有 XAML 檔案]。
在 [新檔名] 中,指定自訂工作流程的名稱,然後按一下 [確定]。
注意事項 如果您想要重複使用現有的 XAML 檔案,也可以按一下 [選取現有 XAML 檔案],然後指定版本控制伺服器上之檔案的路徑。
在 [組建定義] 視窗的 [建置流程檔] 功能表底下,按一下包含範本名稱的超連結。
包含新範本的資料夾就會出現在 [原始檔控制總管] 中。
在 [資料夾] 窗格中,以滑鼠右鍵按一下包含新範本的資料夾,然後按一下 [取得最新的版本]。
以滑鼠右鍵按一下您的新範本,然後按一下 [簽出以編輯]。
[簽出] 對話方塊就會出現。
按一下 [簽出]。
以滑鼠右鍵按一下您的新範本,然後按一下 [檢視]。
[Visual Studio Windows 工作流程設計工具] 隨即出現。
如需詳細資訊,請參閱下列任何一個主題:
自訂新範本
您必須將序列加入至預設範本,以便將部署步驟加入至建置流程的結尾。 您可以使用 [Windows 工作流程設計工具] 來自訂 XAML 檔案。 即使您之前並未使用過該設計工具,下列程序中的步驟也不會特別複雜。 簡單來說,您會將序列加入至工作流程,如果組建成功而且測試並未失敗,就會使用 VSDBCMD.EXE 來部署資料庫。
此序列包含單一 If 活動,如果您的組建成功,而且測試成功或者沒有任何測試,該活動將會部署資料庫。 為了讓這個定義更方便遵循,本節將分成四個程序:
若要將資料庫部署序列加入至工作流程
在 [Windows 工作流程設計工具] 中,按一下 [全部摺疊]。
隨即顯示下圖。
開啟 [工具箱]、展開 [控制流程] 區段,然後將 [序列] 活動拖曳至設計工具上 [簽入 CheckInShelveset 組建之受管制的變更] 底下的箭號。 當您將滑鼠指標停留在箭號上時,就會顯示第二個箭號。
在這兩個箭號之間拖曳活動,如下圖所示。
以滑鼠右鍵按一下您加入的序列,然後按一下 [屬性]。
[屬性] 視窗隨即出現。
將 [DisplayName] 屬性設定為 Deploy Database。
在 [Deploy Database] 序列中,按兩下 [按兩下以檢視]。
設計工具就會放大 [Deploy Database] 序列,如下圖所示。
設計工具頂端會提供巡覽通道,如下圖所示。
接著,請將 [If] 活動加入至部署序列。
若要加入 If 活動
開啟 [工具箱]、展開 [控制流程] 區段,然後將 [If] 活動拖曳至 [在此放置活動]。
此時,[Deploy Database] 序列和 [If] 活動上都會顯示警告圖示,因為您尚未設定 [If] 活動,如下圖所示。
以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。
[屬性] 視窗隨即出現。
將 [If] 活動的 [DisplayName] 屬性設定為 If Build and Tests Succeeded。
按兩下 [If] 活動中的 [按兩下以檢視]。
在 [條件] 中,輸入下列條件。
BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded And (BuildDetail.TestStatus = BuildPhaseStatus.Succeeded Or BuildDetail.TestStatus = BuildPhaseStatus.Unknown)
此條件會測試組建是否成功,以及測試是否成功或者沒有執行測試。
[If Build and Tests Succeeded] 活動看起來就像下圖。
接著,請將 [InvokeProcess] 活動加入至 [If] 活動的 [Then] 部分。
若要定義 Then Deploy 區塊
開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [InvokeProcess] 活動,然後將它拖曳至 [Then] 子句中的 [在此放置活動]。
此時,[If Build and Tests Succeeded] 活動和 [InvokeProcess] 活動上都會顯示警告圖示,因為您尚未設定 [InvokeProcess] 活動。
按兩下 [Invoke VSDBCMD] 活動中的 [按兩下以檢視]。
此活動顯示如下。
執行下列子工作,藉以設定 [InvokeProcess] 活動的屬性:
以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。
[屬性] 視窗隨即出現。
將 [InvokeProcess] 活動的 [DisplayName] 屬性設定為 Invoke VSDBCMD。
將 [Arguments] 屬性設定為 "/a:Deploy /dd+ /dsp:Sql /manifest:DatabaseProjectName.deploymanifest"。 您必須將 DatabaseProjectName 取代成您想要部署之資料庫專案的名稱。
將 [FileName] 屬性設定為組建伺服器上之 VSDBCMD.EXE 的路徑。 例如,如果您將 Visual Studio 安裝在組建電腦上,可能會指定 C:\Program Files\Microsoft Visual Studio 10.0\VSTSDB\Deploy\VSDBCMD.EXE。如果您只有將 Deploy 資料夾複製到組建電腦,可能會指定 C:\Deploy\VSDBCMD.EXE。
重要事項 若要使用 VSDBCMD.EXE 來部署資料庫,Deploy 資料夾的內容必須位於組建電腦上。 如需詳細資訊,請參閱 HOW TO:使用 VSDBCMD.EXE 從命令提示字元準備資料庫進行部署。
將 [WorkingDirectory] 屬性設定為 BuildDetail.DropLocation。
開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [WriteBuildMessage] 活動,然後將它拖曳至 [處理標準輸出] 區段中的 [在此放置活動]。
此時,[Invoke VSDBCMD] 活動和 [WriteBuildMessage] 活動上都會顯示警告圖示,因為您尚未設定 [WriteBuildMessage] 活動。
執行下列子工作,藉以設定 [WriteBuildMessage] 活動的屬性:
以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。
[屬性] 視窗隨即出現。
將 [WriteBuildMessage] 活動的 [DisplayName] 屬性設定為 VSDBCMD Output。
將 [Importance] 屬性設定為 Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High。
將 [Message] 屬性設定為 stdOutput。
開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [WriteBuildError] 活動,然後將它拖曳至 [處理錯誤輸出] 區段中的 [在此放置活動]。
此時,[Invoke VSDBCMD] 活動和 [WriteBuildError] 活動上都會顯示警告圖示,因為您尚未設定 [WriteBuildError] 活動。
執行下列子工作,藉以設定 [WriteBuildError] 活動的屬性:
以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。
[屬性] 視窗隨即出現。
將 [WriteBuildError] 活動的 [DisplayName] 屬性設定為 VSDBCMD Error。
將 [Message] 屬性設定為 errOutput。
在設計工具頂端的通道中,按一下 [If Build and Test Succeeded]。
這樣一來,您就會在工作流程中縮小一個層級。
此時,工作流程隨即顯示,如下圖所示。
接著,請定義 [Else] 活動的詳細資料。
若要定義 Else Skip Deployment 區塊
開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [WriteBuildWarning] 活動,然後將它拖曳至 [Else] 子句中的 [在此放置活動]。
此時,[If Build and Tests Succeeded] 活動和 [WriteBuildWarning] 活動上都會顯示警告圖示,因為您尚未設定 [WriteBuildWarning] 活動。
將 [WriteBuildWarning] 活動的 [DisplayName] 屬性設定為 Deployment Skipped。
將 [Message] 屬性設定為 "Database deployment was skipped"。
警告圖示不再顯示,因為您已設定所加入的工作流程活動。
此時應該會顯示 [If] 活動,如下圖所示。
您已經將組建工作流程更新為部署指定的資料庫專案。 接著,您只要將範本簽入至版本控制,就可以在建置流程中使用它。
將範本簽入至版本控制
在組建定義中使用工作流程之前,您必須先將它簽入至版本控制。 您也可以利用版本控制的功能,例如分支。 您可以在分支專案時分支工作流程。
儲存您的工作流程並關閉設計工具。
在 [原始檔控制總管] 中,以滑鼠右鍵按一下您的新範本,然後按一下 [簽入暫止的變更]。
[簽入] 對話方塊隨即出現。
(選擇性) 您可以指定簽入註解或是有關變更的其他資訊。 如需詳細資訊,請參閱下列主題:
按一下 [簽入]。
接著,您可以定義組建,以便使用在本逐步解說中建置的自訂工作流程。 如需詳細資訊,請參閱 HOW TO:使用 Team Foundation Build 部署變更。
後續步驟
您應該立即測試自訂的範本。 如需詳細資訊,請參閱 HOW TO:使用 Team Foundation Build 部署變更。
請參閱
工作
HOW TO:使用 VSDBCMD.EXE 從命令提示字元準備資料庫進行部署
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 7 月 |
加入這個主題的目的是要示範如何建立自訂工作流程,以便使用 Team Foundation Build 來部署資料庫。 |
資訊加強。 |