2016-11-04 101 views
1

關於TeamCity上構建鏈的所有文檔以及他們的博客帖子均涉及簡單設置,它們不會公開您在現實生活中可能遇到的更復雜的設置,這會使我遇到以下問題。爲什麼構建配置不能在TeamCity中爲構建鏈並行運行?

我有幾個複雜的設置需要: 理想情況下,& B和d &Ë將在不同的構建節點同時運行。 A--\C/--E B--/D\--F 在上述甲&乙運行併發的,因爲這樣做Ç& d但是C & d如果兩個甲&乙通,也是如此對於E &˚F它們運行並行,但僅觸發僅當兩個Ç& d通。 /-- B --\ A D \-- C --/ 理想情況下B & C應該在不同的節點上並行運行。

然而,TeamCity拒絕這樣做,並且所有構建在單個構建節點上都是連續的,這非常令人討厭,因爲它會將構建時間浪費在水中。

我已經嘗試過Snapshot依賴關係和Finish生成觸發器的各種組合,無濟於事,TeamCity拒絕並行運行任何步驟。

+0

這是出乎意料的。您是否可能設置了代理商要求,以便這些代理商都被鎖定在一個代理商身上? – sferencik

+0

構建中不存在任何代理要求,只是它們需要安裝Xcode。 – Sauraus

+0

您是否至少有2個構建代理(節點)連接到服務器?這些節點是否與您的兩個並行構建配置兼容? – KIR

回答

2

TC 10.x中的快照依賴性在模板和構建配置之間略有不同。

鑑於此示例配置,在D上觸發構建將導致2個不同的執行樹。 /-- B --\ A D \-- C --/

如果在模板上定義了快照依賴關係,則TeamCity將按順序執行所有構建,例如。 A,B,C & D.

如果快照相關性上的生成配置定義,那麼TeamCity的將執行構建爲A,則B & C並行地和最後D.

0

您應該刪除所有「完成構建」觸發器。他們不需要運行快照依賴關係鏈。只需在鏈的最後一個配置(F或D)中開始構建,並根據重用配置將所有其他構建添加到隊列中。

+0

我非常熟悉快照依賴關係以及它如何用於創建構建鏈。那麼,讓我們舉一個最後一個例子,A - > B&C - > D,B&C都依賴於運行A,我如何防止TC順序排列B&C,而是平行運行它們? 如果有2個'最後'的版本,我該如何開始鏈中的最後一個版本?就像我中間的例子一樣? – Sauraus

+0

以'A - > B&C - > D'爲例。只要有四個快照依賴關係和** no **完成構建觸發器,啓動'D'應該在'A'之後並行執行'B'和'C'並排列'A','B'和'C' '完成(只要兼容的構建代理可用)。 如果TeamCity的行爲不然,這是一個錯誤 –

相關問題