2011-03-14 16 views
4

近幾個月來,我們的存儲庫規模不斷增長,TeamCity的構建現在變得非常緩慢。我如何加快我們的TeamCity構建?

很多批量來自安裝文件和其他非代碼,非必要(用於構建無論如何)人們已經簽入SVN的東西。

我們只是運行基本的免費版本,並有3個代理。我們的VCS結帳模式是「自動在服務器上」。這兩個解決方案文件都是C#,我們正在使用MSBuild腳本。

我喜歡構建配置中的結帳規則部分,但已經讀過它不起作用,因爲它提取所有代碼,然後應用規則,如果你問我,就會破壞對象。

構建現在需要大約1個小時,但如果我只能讓TeamCity獲取它所需的代碼而沒有其他任何東西,那麼我認爲我可以將其降低到10分鐘或更少。

我發現了一些文章,使用MSBuild排除文件&文件夾,但我找不到任何關於從SVN中獲取的構建腳本,我認爲TeamCity可以做到這一點。

任何人都可以提出我們可以做出的任何改變,或者使用TeamCity和MSBuild從頭開始構建一個良好的文章,這將允許我選擇從SVN中獲取什麼?

謝謝。

+0

任何人都推薦一些關於源代碼管理最佳實踐,CI和解決方案結構最佳實踐的好文章或書籍? – Michael 2011-03-14 17:13:13

+1

Martin Fowler ftw:http://martinfowler.com/articles/continuousIntegration.html – 2011-07-01 06:21:27

回答

2
  1. 建立只有最新變化。
  2. CI構建不需要完成發佈版本的所有工作。所有CI需要編譯並做一些驗證。
  3. 解決方案,有時開發人員將負載放入任何單個sln。如果你在一個SLN中獲得了大量的服務,並且每次只修改一個服務就可以構建它? 因此將它們分開 - 每個輸出一個sln(我的意思是exe或服務或任何不是單個DLL)
  4. 平行構建。 爲每個輸出具有不同的構建目標(在TeamCity中)
  5. 構建到構件,部署構件。這意味着您不必等待構建才能完成部署。

十分鐘同步對於SVN來說還是很長的時間,這真的要下降了,在命令行需要多長時間? 將非構建相關項目移動到另一個回購?

對於大型代碼庫和svn,考慮將核心組件構建到Svn中的檢查二進制文件/引用節中。 這允許您將構建的對象分享給其他團隊,而不是浪費時間構建其代碼。

希望有幫助嗎?

+0

嗨,詹姆斯 - 感謝您的回覆。只是爲了澄清一下,同步時間是什麼意思?要用SVN做一個完整的清理結賬,或者只是爲了更新?隨着回購增長到1GB以上,全面結賬需要很長時間。更新根據更改而有所不同。我認爲我們的SVN服務器並不那麼快,但就像你說的10分鐘真的太久了。 – Michael 2011-03-14 11:11:48

+0

我的意思是獲得一個全新的代碼庫副本的時間。我認爲你需要對這個問題進行排序。 10分鐘是一個乾淨的副本年齡。 – 2011-03-14 11:42:03