指定組建觸發程序和原因

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

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

    • 保護小組免於建置中斷

    • 使用連續整合維護品質

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

  • 使用自動組建觸發程序

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

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

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

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

  • 手動將組建排入佇列

    • 將組建排入佇列

    • 將私用組建排入佇列

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

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

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

保護小組免於建置中斷

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

使用連續整合維護品質

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

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

如需如何使用建置系統支援連續整合的詳細資訊,請參閱設定 CI 組建

執行夜間 BVT 檢查產品品質

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

如需 [排程] 觸發程序的詳細資訊,請參閱使用排程觸發程序,定期將組建排入佇列。

使用自動組建觸發程序

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

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

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

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

使用正在復原組建觸發程序定期同時建置多個簽入

如果您使用 [正在復原組建] 觸發程序來定義組建,建置系統會把每一個簽入且沒在執行的組建排入佇列。 如果組建正在執行,系統會等待組建完成,然後將所有尚未建置之簽入的另一個組建排入佇列。 如果選取 [建置最高頻率 n 分鐘] 核取方塊,並輸入一個介於 0 和 2147483647 之間的整數值,那麼您也可以限制建置的頻率。

例如,您只能有一個組建代理程式,而它可能會每 20 分鐘就完成組建。 如果您使用 [連續整合] 觸發程序,而且您的小組在上午 10 點鐘和上午 11 點鐘之間簽入程式碼九次,則最後一次的簽入可能要到下午 1 點鐘之後才會進行建置。不過,如果您使用 [正在復原組建] 觸發程序並指定 60 分鐘為間隔,就可能在上午 11:20 之前建置同一組簽入。

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

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

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

您只能在 TFVC icon TFVC Team 專案中使用此觸發程序;無法在 Git icon Git Team 專案中使用。

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

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

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

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

排程觸發程序

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

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

提示

如果您開發自訂建置流程範本,而且選取 Schedule 做為範本的 InvokeForReason 區段之 [Reason] 屬性的值,在大部分情況下可能也要選取 ScheduleForced。

排程觸發程序 (原因:ScheduleForced)

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

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

提示

如果您開發自訂建置流程範本,而且選取 ScheduleForced 做為範本的 InvokeForReason 區段之 [Reason] 屬性的值,在大部分情況下可能也要選取 Schedule。

手動將組建排入佇列

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

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

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

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

將組建排入佇列

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

將私用組建排入佇列

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

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

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

使用組建觸發程序和原因

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

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

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