2013-08-03 41 views
0

我爲我的構建使用TFS 2012。如何獲取TFS構建自定義代碼活動失敗並不計數相關的變更集?

當構建在TFS中運行時,會得到自上次成功構建以來包含的變更集。這些被稱爲Associated Changesets

我有一個自定義構建活動,我想在某些條件下構建失敗。爲了觸發這個失敗,我只是拋出一個異常。

我遇到的問題是,即使引發異常(並且構建失敗),下一個構建也不包含Associated Changesets中以前失敗構建的變更集。

有誰知道在構建工作流程的哪一點,變更集被標記爲成功?

我後面的行爲是,如果我的自定義活動的構建失敗,則此構建的變更集應出現在下一個構建的Associated Changesets中。依此類推,直到構建成功。

+0

的是否最終build失敗時的狀態?您在什麼時候拋出錯誤 - 您可能需要確保編譯狀態也失敗。檢查BuildDefinitions LastBuild LastGoodBuild Uris以查看那裏記錄了什麼tfs。我一直認爲變更集基於lastgoodbuild版本,但可能是工作區更新實際上獲取列表,看看您是否有輸出或無作爲工作區清理設置,並嘗試全部替代。 – drk

+0

@drk - 構建以失敗狀態完成。 '如果TreatTestFailureAsBuildFailure和(TestStatus = Failed)'''後錯誤被拋出。我不知道如何檢查'LastGoodBuild'。我搜索了它,但找不到任何東西。我想我可能需要做一些類似'If TreatTestFailureAsBuildFailure And(TestStatus = Failed)'的條件,然後運行一個名爲'Set Status to Failed'的任務。 – gregpakes

+0

您可能需要使用api,它描述瞭如何獲取構建定義對象 - http://www.almguide.com/2011/11/tfs-api-accessing-build-definition-values-programmatically/。您還可以通過構建工作流中的BuildDetails訪問它,這些構建工作流應該可以在http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.aspx中找到。 – drk

回答

0

而不是拋出異常使用context.TrackBuildError("oops my build broke")

這將導致構建正確的失敗,變更將不會被關聯

+0

這就是我原來的設置,這不起作用。這導致構建部分成功而不是失敗。變更集也保持關聯。 – gregpakes

+0

似乎這是[期望的行爲。](http://stackoverflow.com/questions/6290694/forcing-a-tfs2010-workflow-build-to-fail-instead-of-partially-succeed) –

相關問題