指定組建觸發程序和原因

您可以按照需要手動將組建排入佇列,但使用自動觸發程序定義的建置流程,是在大部分情況下最能符合小組需求的最佳方式。 觸發組建時,特定原因會記錄在 Reason 屬性中。 本主題將說明如何在開發建置流程時使用所有可用的組建觸發程序和組建原因。

  • 使用組建觸發程序達成小組目標

    • 保護小組免於建置中斷

    • 使用連續整合維護品質

    • 執行夜間 BVT 檢查產品品質

  • 使用自動組建觸發程序

    • 使用連續整合觸發程序,在簽入變更時將組建排入佇列

    • 使用正在復原組建觸發程序,在簽入變更但組建執行的頻率有限制時將組建排入佇列

    • 使用閘道簽入觸發程序,在小組成員嘗試簽入變更而且在建置失敗的情況下封鎖變更時將組建排入佇列

    • 使用排程觸發程序,定期將組建排入佇列

  • 手動將組建排入佇列

    • 將組建排入佇列

    • 將私用組建排入佇列

  • 使用自訂程式碼將組建排入佇列

  • 使用組建觸發程序和原因

使用組建觸發程序達成小組目標

Hh190718.collapse_all(zh-tw,VS.110).gif保護小組免於建置中斷

開發人員簽入中斷組建的變更時,對於小型小組來說結果可能相當棘手, 而對於大型小組來說,成本可能相當昂貴,因為將面臨喪失生產力和進度延遲的成本。 您可以使用閘道簽入觸發程序,保護部分或所有程式碼基底避免此問題發生。

Hh190718.collapse_all(zh-tw,VS.110).gif使用連續整合維護品質

連續整合是指盡可能經常將程式碼整合至共用儲存機制的程序。 在程式碼整合期間,只要建置中斷或測試失敗,您就能馬上知道程式碼是有錯誤的。 您可以使用連續整合觸發程序,實作連續整合。 正在復原組建觸發程序與 [連續整合] 觸發程序類似,而且每次發生簽入時,如果沒有功能夠強大的建置系統來執行組建,前者會非常有用。

閘道簽入觸發程序可以做為連續整合的更精確方法。 [連續整合] 觸發程序會提醒小組注意建置中斷或核心單元測試失敗之類問題,而 [閘道簽入] 觸發程序會阻止這類問題傳入程式碼基底。

如需如何使用建置系統支援連續整合的詳細資訊,請參閱定義建置流程以支援連續整合連續建置和部署

Hh190718.collapse_all(zh-tw,VS.110).gif執行夜間 BVT 檢查產品品質

您可以定期排定測試回合,以評估組建的品質。 這些測試通常稱為組建驗證測試 (BVT) 或煙霧測試。 這些測試通常由廣泛的測試套件所組成,可用來驗證特定組建的應用程式關鍵區域。 您可以使用 [排程] 觸發程序,實作夜間 BVT 回合。

如需 [排程] 觸發程序的詳細資訊,請參閱使用排程觸發程序,定期將組建排入佇列。 如需如何設定 BVT 程序的詳細資訊,請參閱 HOW TO:在建置應用程式之後設定和執行已排程的測試

使用自動組建觸發程序

您必須為組建定義指定組建觸發程序。 在大部分情況下,您會想要讓建置流程自動執行。 您可以選擇本節所述的其中一個自動觸發程序。

Hh190718.collapse_all(zh-tw,VS.110).gif使用連續整合觸發程序,在簽入變更時將組建排入佇列

當您使用 [連續整合] 觸發程序定義組建時,這個組建會在每次小組成員簽入變更時排入佇列。 [工作區] 組建定義會決定觸發組建定義的檔案。 如需組建工作區的詳細資訊,請參閱使用組建工作區

由 [連續整合] 觸發的組建會被指派 IndividualCI 的 Reason

Hh190718.collapse_all(zh-tw,VS.110).gif使用正在復原組建觸發程序在一個固定的區間建立多個簽入組建

如果你用復原組建觸發程序定義一個組件,組件系統會把每一個簽入且沒在執行的組建放進佇列。 如果組建執行時,系統會等待,直到組建完成然後把未建立任何簽入的另一個組建放進佇列。 如果選取 [每n 分鐘建置最高頻率 ] 核取方塊,並輸入介於 0 和 2147483647 之間的整數值,那麼您可以進一步限制建置的頻率。

例如,您只能有一個組建代理程式,它可能會每 20 分鐘完成組建。 如果你使用 連續整合 觸發程序且你的小組在A.M. and 11 A.M.確認了九次程式碼 ,最後一次簽入將不會在1 P.M. 一點以前建置。然而,如果你用 復原組建觸發程序且選定60分鐘為一個區間, 同樣的簽入設定會在11:20A.M.建置。

[工作區] 組建定義會決定觸發組建定義的檔案。 如需組建工作區的詳細資訊,請參閱使用組建工作區

由 [正在復原組建] 觸發的組建會被指派 BatchedCI 的 Reason

Hh190718.collapse_all(zh-tw,VS.110).gif使用閘道簽入觸發程序,在小組成員嘗試簽入變更而且在建置失敗的情況下封鎖變更時將組建排入佇列

當您使用 [閘道簽入] 觸發程序定義組建時,小組成員送出至版本控制系統的變更會放入擱置集並排入佇列中等候建置。 建置必須成功,才能完成簽入程序。 [工作區] 組建定義會決定由組建定義控制的檔案。 如需組建工作區的詳細資訊,請參閱使用組建工作區

由 [閘道簽入] 觸發的組建會被指派 CheckInShelveset 的 Reason

如需如何實作 [閘道簽入] 觸發程序的詳細資訊,請參閱 定義閘道簽入建置流程來驗證變更。 如需這種組建定義如何影響小組的詳細資訊,請參閱簽入由閘道簽入組建所控制的暫止變更

Hh190718.collapse_all(zh-tw,VS.110).gif使用排程觸發程序,定期將組建排入佇列

Hh190718.collapse_all(zh-tw,VS.110).gif排程觸發程序

當您使用 [排程] 觸發程序定義組建,而且清除 [建置,即使自上次建置後組建內容未變更] 核取方塊時,如果自最近一次執行這個組建定義之後已經簽入變更,組建會排入佇列中等候直到您指定的天數和時間。 不論變更是否與上次成功建置有關,組建都會排入佇列中。

由這個方式觸發的組建會被指派 Schedule 的 Reason

提示

如果您開發自訂建置流程範本,而且選取 Schedule 做為範本的 根據原因 (觸發程序) 限制建置流程的區段 (InvokeForReason 活動) 區段之 [Reason] 屬性的值,在大部分情況下可能也要選取 ScheduleForced。

Hh190718.collapse_all(zh-tw,VS.110).gif排程觸發程序 (原因:ScheduleForced)

當您使用 [排程] 觸發程序定義組建,而且選取 [建置,即使自上次建置後組建內容未變更] 核取方塊時,組建會排入佇列中等候直到您指定的天數和時間。 不論是否簽入變更,組建都會排入佇列中。

由這個方式觸發的組建會被指派 ScheduleForced 的 Reason

提示

如果您開發自訂建置流程範本,而且選取 ScheduleForced 做為範本的 根據原因 (觸發程序) 限制建置流程的區段 (InvokeForReason 活動) 區段之 [Reason] 屬性的值,在大部分情況下可能也要選取 Schedule。

手動將組建排入佇列

在某些情況下,您可能有不要自動執行的建置流程。

  • 組建定義可能尚未做好自動執行的準備,因為仍在開發中。

  • 您可能有只要手動執行的特殊建置流程。

在這些情況下,您可以選取 [手動] 觸發程序。 組建定義只會在小組成員手動將它排入佇列時執行。

Hh190718.collapse_all(zh-tw,VS.110).gif將組建排入佇列

您可以手動將任何組建定義排入佇列,即使是使用 [手動] 以外的組建觸發程序定義的也一樣。 手動將組建排入佇列時,Reason 會設為 Manual。 如需如何手動將組建排入佇列的詳細資訊,請參閱將組建排入佇列

Hh190718.collapse_all(zh-tw,VS.110).gif將私用組建排入佇列

如果您想要建置已放入擱置集的變更,您可以在簽入程式碼之前使用私用組建 (也稱為「協同組建」) 驗證程式碼的變更。 手動將私用組建排入佇列時,Reason 會設為 ValidateShelveset。 如需如何手動將私用組建排入佇列的詳細資訊,請參閱將組建排入佇列

使用自訂程式碼建立完成的組建

您可以在 Microsoft.TeamFoundation.Build 命名空間中充分利用類別,以開發建立完成的組建之自訂程式碼。 透過這種方式將組建排入佇列時,Reason 會設為 UserCreated。 如需詳細資訊,請參閱Extending Team Foundation: Build

使用組建觸發程序和原因

您可以透過下列方式,在建置流程中充分利用觸發程序和原因:

  • 為建置流程設定觸發程序:在組建定義中,按一下 [觸發程序] 索引標籤,然後選取最符合小組需求的觸發程序。 如需如何建立組建定義的詳細資訊,請參閱建立組建定義

  • 定義自訂建置流程接受的組建原因:您可以使用 InvokeForReason 活動封入建置流程的區段,而這個流程只要在因特定原因而執行的組建中執行。 如需詳細資訊,請參閱根據原因 (觸發程序) 限制建置流程的區段 (InvokeForReason 活動)