共用方式為


逐步解說:定義自訂工作流程來從 Team Foundation Build 部署資料庫

更新:2010 年 7 月

在您使用 Team Foundation Build 來部署資料庫專案之前,必須先定義設定為部署資料庫的自訂工作流程。 您必須定義自訂工作流程,然後才能在組建定義中使用該工作流程定義。 您可以使用 Windows Workflow 4.0 來定義工作流程。 就算您不是專家,也可以遵循這個簡單的程序。

若要完成這個逐步解說,您必須完成下列工作:

  1. 建立建置流程範本

  2. 自訂新範本

  3. 將範本簽入至版本控制

必要的使用權限

若要執行下列程序,您必須將 [編輯組建定義] 權限設定為 [允許]。 如需詳細資訊,請參閱 Team Foundation Server 使用權限

建立建置流程範本

建立建置流程範本最簡單的方式就是複製預設範本。 您可以在建立組建定義時執行該動作。 一般而言,您會完成組建定義。 因為本逐步解說的重點是放在自訂建置流程範本上,所以本逐步解說不會處理定義新組建的其他詳細資料。 如需如何針對資料庫專案定義組建的詳細資訊,請參閱 HOW TO:使用 Team Foundation Build 部署變更

若要建立自訂範本

  1. 在 [Team 總管] 中,按一下您想要建立自訂工作流程的 Team 專案。

  2. 按一下 [建置] 功能表上的 [新增組建定義]。

  3. 按一下 [流程] 索引標籤以查看下圖。

    新組建定義的 [流程] 索引標籤

  4. 按一下 [顯示詳細資料],然後按一下 [新增]。

    [新增建置流程範本] 對話方塊隨即出現。

  5. 按一下 [複製現有 XAML 檔案]。

  6. 在 [新檔名] 中,指定自訂工作流程的名稱,然後按一下 [確定]。

    注意事項注意事項

    如果您想要重複使用現有的 XAML 檔案,也可以按一下 [選取現有 XAML 檔案],然後指定版本控制伺服器上之檔案的路徑。

  7. 在 [組建定義] 視窗的 [建置流程檔] 功能表底下,按一下包含範本名稱的超連結。

    包含新範本的資料夾就會出現在 [原始檔控制總管] 中。

  8. 在 [資料夾] 窗格中,以滑鼠右鍵按一下包含新範本的資料夾,然後按一下 [取得最新的版本]。

  9. 以滑鼠右鍵按一下您的新範本,然後按一下 [簽出以編輯]。

    [簽出] 對話方塊就會出現。

  10. 按一下 [簽出]。

  11. 以滑鼠右鍵按一下您的新範本,然後按一下 [檢視]。

    [Visual Studio Windows 工作流程設計工具] 隨即出現。

    如需詳細資訊,請參閱下列任何一個主題:

自訂新範本

您必須將序列加入至預設範本,以便將部署步驟加入至建置流程的結尾。 您可以使用 [Windows 工作流程設計工具] 來自訂 XAML 檔案。 即使您之前並未使用過該設計工具,下列程序中的步驟也不會特別複雜。 簡單來說,您會將序列加入至工作流程,如果組建成功而且測試並未失敗,就會使用 VSDBCMD.EXE 來部署資料庫。

此序列包含單一 If 活動,如果您的組建成功,而且測試成功或者沒有任何測試,該活動將會部署資料庫。 為了讓這個定義更方便遵循,本節將分成四個程序:

  1. 若要將資料庫部署序列加入至工作流程

  2. 若要加入 If 活動

  3. 若要定義 Then Deploy 區塊

  4. 若要定義 Else Skip Deployment 區塊

若要將資料庫部署序列加入至工作流程

  1. 在 [Windows 工作流程設計工具] 中,按一下 [全部摺疊]。

    隨即顯示下圖。

    初始部署工作流程

  2. 開啟 [工具箱]、展開 [控制流程] 區段,然後將 [序列] 活動拖曳至設計工具上 [簽入 CheckInShelveset 組建之受管制的變更] 底下的箭號。 當您將滑鼠指標停留在箭號上時,就會顯示第二個箭號。

  3. 在這兩個箭號之間拖曳活動,如下圖所示。

    置放新順序之後的工作流程

  4. 以滑鼠右鍵按一下您加入的序列,然後按一下 [屬性]。

    [屬性] 視窗隨即出現。

  5. 將 [DisplayName] 屬性設定為 Deploy Database。

  6. 在 [Deploy Database] 序列中,按兩下 [按兩下以檢視]。

    設計工具就會放大 [Deploy Database] 序列,如下圖所示。

    擴充部署順序之後的工作流程

    設計工具頂端會提供巡覽通道,如下圖所示。

    Windows Workflow Designer 中的巡覽通道

接著,請將 [If] 活動加入至部署序列。

若要加入 If 活動

  1. 開啟 [工具箱]、展開 [控制流程] 區段,然後將 [If] 活動拖曳至 [在此放置活動]。

    此時,[Deploy Database] 序列和 [If] 活動上都會顯示警告圖示,因為您尚未設定 [If] 活動,如下圖所示。

    加入 If 活動之後的工作流程

  2. 以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。

    [屬性] 視窗隨即出現。

  3. 將 [If] 活動的 [DisplayName] 屬性設定為 If Build and Tests Succeeded。

  4. 按兩下 [If] 活動中的 [按兩下以檢視]。

  5. 在 [條件] 中,輸入下列條件。

    BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded And (BuildDetail.TestStatus = BuildPhaseStatus.Succeeded Or BuildDetail.TestStatus = BuildPhaseStatus.Unknown)
    

    此條件會測試組建是否成功,以及測試是否成功或者沒有執行測試。

[If Build and Tests Succeeded] 活動看起來就像下圖。

展開 If 活動之後的工作流程

接著,請將 [InvokeProcess] 活動加入至 [If] 活動的 [Then] 部分。

若要定義 Then Deploy 區塊

  1. 開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [InvokeProcess] 活動,然後將它拖曳至 [Then] 子句中的 [在此放置活動]。

    此時,[If Build and Tests Succeeded] 活動和 [InvokeProcess] 活動上都會顯示警告圖示,因為您尚未設定 [InvokeProcess] 活動。

  2. 按兩下 [Invoke VSDBCMD] 活動中的 [按兩下以檢視]。

    此活動顯示如下。

    定義 Then 子句時的工作流程

  3. 執行下列子工作,藉以設定 [InvokeProcess] 活動的屬性:

    1. 以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。

      [屬性] 視窗隨即出現。

    2. 將 [InvokeProcess] 活動的 [DisplayName] 屬性設定為 Invoke VSDBCMD。

    3. 將 [Arguments] 屬性設定為 "/a:Deploy /dd+ /dsp:Sql /manifest:DatabaseProjectName.deploymanifest"。 您必須將 DatabaseProjectName 取代成您想要部署之資料庫專案的名稱。

    4. 將 [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 從命令提示字元準備資料庫進行部署

    5. 將 [WorkingDirectory] 屬性設定為 BuildDetail.DropLocation。

  4. 開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [WriteBuildMessage] 活動,然後將它拖曳至 [處理標準輸出] 區段中的 [在此放置活動]。

    此時,[Invoke VSDBCMD] 活動和 [WriteBuildMessage] 活動上都會顯示警告圖示,因為您尚未設定 [WriteBuildMessage] 活動。

  5. 執行下列子工作,藉以設定 [WriteBuildMessage] 活動的屬性:

    1. 以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。

      [屬性] 視窗隨即出現。

    2. 將 [WriteBuildMessage] 活動的 [DisplayName] 屬性設定為 VSDBCMD Output。

    3. 將 [Importance] 屬性設定為 Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High。

    4. 將 [Message] 屬性設定為 stdOutput。

  6. 開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [WriteBuildError] 活動,然後將它拖曳至 [處理錯誤輸出] 區段中的 [在此放置活動]。

    此時,[Invoke VSDBCMD] 活動和 [WriteBuildError] 活動上都會顯示警告圖示,因為您尚未設定 [WriteBuildError] 活動。

  7. 執行下列子工作,藉以設定 [WriteBuildError] 活動的屬性:

    1. 以滑鼠右鍵按一下您加入的活動,然後按一下 [屬性]。

      [屬性] 視窗隨即出現。

    2. 將 [WriteBuildError] 活動的 [DisplayName] 屬性設定為 VSDBCMD Error。

    3. 將 [Message] 屬性設定為 errOutput。

    4. 在設計工具頂端的通道中,按一下 [If Build and Test Succeeded]。

      這樣一來,您就會在工作流程中縮小一個層級。

此時,工作流程隨即顯示,如下圖所示。

完成 Then 子句之後的工作流程

接著,請定義 [Else] 活動的詳細資料。

若要定義 Else Skip Deployment 區塊

  1. 開啟 [工具箱]、在 [Team Foundation Build 活動] 區段中尋找 [WriteBuildWarning] 活動,然後將它拖曳至 [Else] 子句中的 [在此放置活動]。

    此時,[If Build and Tests Succeeded] 活動和 [WriteBuildWarning] 活動上都會顯示警告圖示,因為您尚未設定 [WriteBuildWarning] 活動。

  2. 將 [WriteBuildWarning] 活動的 [DisplayName] 屬性設定為 Deployment Skipped。

  3. 將 [Message] 屬性設定為 "Database deployment was skipped"。

    警告圖示不再顯示,因為您已設定所加入的工作流程活動。

此時應該會顯示 [If] 活動,如下圖所示。

完成資料庫部署工作流程

您已經將組建工作流程更新為部署指定的資料庫專案。 接著,您只要將範本簽入至版本控制,就可以在建置流程中使用它。

將範本簽入至版本控制

在組建定義中使用工作流程之前,您必須先將它簽入至版本控制。 您也可以利用版本控制的功能,例如分支。 您可以在分支專案時分支工作流程。

  1. 儲存您的工作流程並關閉設計工具。

  2. 在 [原始檔控制總管] 中,以滑鼠右鍵按一下您的新範本,然後按一下 [簽入暫止的變更]。

    [簽入] 對話方塊隨即出現。

  3. (選擇性) 您可以指定簽入註解或是有關變更的其他資訊。 如需詳細資訊,請參閱下列主題:

  4. 按一下 [簽入]。

接著,您可以定義組建,以便使用在本逐步解說中建置的自訂工作流程。 如需詳細資訊,請參閱 HOW TO:使用 Team Foundation Build 部署變更

後續步驟

您應該立即測試自訂的範本。 如需詳細資訊,請參閱 HOW TO:使用 Team Foundation Build 部署變更

請參閱

工作

HOW TO:使用 VSDBCMD.EXE 從命令提示字元準備資料庫進行部署

HOW TO:將變更部署到新的或現有的資料庫

概念

資料庫建置與部署概觀

變更記錄

日期

記錄

原因

2010 年 7 月

加入這個主題的目的是要示範如何建立自訂工作流程,以便使用 Team Foundation Build 來部署資料庫。

資訊加強。