2013-08-26 53 views
1

有沒有辦法讓TeamCity build 的工件被引用爲(但未複製)作爲另一個TeamCity構建的依賴關係?TeamCity依賴沒有複製文件?

一些背景:我一直在努力減少一些TeamCity配置中的構建時間。這是一個依賴於多個第三方庫的C++程序,我們的系統管理員一直不願意在構建機器上安裝它。

我們的第一次運行將庫壓縮並解壓縮/編譯爲配置中的構建步驟。這需要一段時間,所以Sys Admin將第三方lib解壓縮/編譯移植到單獨的配置中,並將該構建的構件設置爲構建的依賴關係,我試圖加快構建速度。

但是,在這種構建配置下情況更糟糕。展開/編譯的第三方庫大小(超過1GB)實際上使原始配置速度提高了10分鐘以上。如果有一種方法可以在不復制東西的情況下引用工件目錄,那就太棒了。

回答

1

據我知道有沒有辦法阻止服務器的神器副本劑:這將是不可能的編譯器/鏈接找到的依賴......

在我看來,你可以採取的最好的這兩種配置都是通過發佈壓縮文件(只需將「.zip」推遲到目標路徑)並從「上次成功構建」中獲取它們。

這樣你將只觸發相應的源代碼更改(減少總體構建時間)的lib重新編譯,並且工件將作爲壓縮存檔傳輸(減少傳輸時間)。

也許你可以通過與其他人分開構建每個庫來進一步優化:只有具有掛起更改的庫纔會被重新編譯。

+0

嗯...壓縮的神器路線聽起來很有趣。我會捅一下,看看它是否比第一個解決方案更快。如果是這樣,我會將其標記爲答案(除非有人設置參考)。謝謝! – eb1

2

不要使用artefact的依賴關係。

而是建立兩個以上的生成配置(一個主要應用程序,一個或更多的第三方庫),然後在它們之間建立snapshot dependencies,它配置到運行建立在同一代理

這樣做可以確保第三方庫中的二進制文件始終在本地文件系統上可用,並始終保持最新狀態(但不經常重建 - 假設沒有源更改)。

您應該能夠在checkout directory中找到足夠容易的第三方二進制文件。

人爲因素緩慢的原因是他們上傳到中央中央服務器,然後由代理下載。顯然不適合1GB的第三方庫。