2011-12-19 37 views
2

我們有幾個項目,並且彼此之間有依賴關係。例如,我們有一個依賴於項目foo的項目欄。 foo項目是我們希望包含在所有其他項目中的SDK(基礎庫),因爲我們發現我們一次又一次地解決了同樣的問題。如何使用TeamCity包含另一個項目中的另一個項目的DLL

目前項目foo和bar是獨立構建的,bar項目有對foo.dll的引用,它存儲在SVN的bar \ lib文件夾中。因此,如果我們對foo項目進行任何更改,那麼我們必須採取最新的構建,檢查欄項目並複製新的DLL並再次提交。這是一個小手冊,煩人。特別是因爲我們現在有大約3或4個依靠foo圖書館的項目。

我不想把所有東西都放在一個解決方案中,因爲這看起來有點愚蠢。 foo項目不應該經常更改並提供SDK。他們不相互關聯。我們已經將相關項目集中在解決方案中。我們有一些解決方案,已經有4-5個項目與他們的測試項目。把所有東西放在一起會產生一個40-50個項目的解決方案,這看起來像一場噩夢。

我想用TeamCity實現的是,如果對Foo進行了任何更改,它會使用更新後的Foo DLL自動觸發一個新的欄版本。這樣,如果有人做出突變,我們立即找到。然後,罪魁禍首必須解決他的錯誤提交或在所有依賴項目中進行必要的更改。

到目前爲止,我們已經完成了大部分解決方案構建在TeamCity中,運行單元測試和創建工件。我試圖在foo構建的bar構建配置中設置工件依賴項。這應該將foo \ build \ release \ foo.dll複製到bar \ lib \ foo.dll中。我們現在得到錯誤,說明

Failed to resolve artifact dependency xxx ... java.io.FileNotFoundException ... Access Denied 

什麼是做我們正在嘗試的最佳做法?我們正在走正確的道路嗎?如果我們正在以正確的方式來解決這個錯誤?

回答

3

您可以使用SVN外部在中心位置的項目之間共享程序集。

在構建結束時,我們總是在SVN中標記輸出,並用最新的構建輸出替換最新文件夾的內容。

_output\v1.2.3\ 

_output\v1.2.4\ 

_output\latest\ 

所以latest將包含相同v1.2.4文件夾。所以在開發中,我們始終將我們的項目依賴項定位到最新的文件夾,因此無論何時檢出項目,它總是會加載最新的成功構建程序集。

通過這種方式,我們可以在TeamCity中鏈接構建配置,以便使用您的示例在FOO成功構建時立即構建BAR;並且因爲它從最新的文件夾檢出FOO程序集,所以BAR項目是使用最新更改構建的。

這是什麼讓它持續集成,而不僅僅是一個構建過程。

任何錯別字的道歉。我在我的筆記本電腦上使用微型camperv;鑰匙很小,沒有太多的肘部空間!

+0

+1。謝謝 – uriDium 2011-12-20 08:38:33

相關問題