2011-08-29 99 views
8

我想安裝詹金斯輪詢我的SVN回購,並開始一個新的構建,只要它檢測到提交已經進入。我已經得到了投票部分工作,但這座建築太過於熱鬧了,現在每次投票時都會重建 - 無論是否有任何變化。該SCM-polling.log文件讀取:Jenkins投票SVN不斷建立,即使沒有新的提交

Started on Aug 31, 2011 9:49:51 AM 
Workspace doesn't contain svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk. Need a new build. 
Done. Took 10 ms 
Changes found 
從詹金斯

控制檯輸出看起來是這樣的:

Started by an SCM change 
Checking out a fresh workspace because the workspace is not svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk 
Cleaning workspace /var/lib/jenkins/jobs/CSATester/workspace 
Checking out svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk 
.... 
no revision recorded for svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk in the previous build 
No changesets found for this build 

回購URL設置爲SVN://10.64.147.118:/ SVN /回購/ conttest/trunk,我告訴Jenkins刪除未版本化的文件,然後在構建之前進行更新。工作空間絕對包含回購中的文件,並且每次構建都會成功。

有關可能導致此問題的任何想法?

+0

現在有同樣的問題。Hudson及時輪詢存儲庫,但每次修改都會修改。這怎麼可能是默認設置? – Jonny

回答

3

因此,我發現似乎svn://協議在Jenkins或SVN插件中都不被支持。在將我的SVN服務器更改爲使用http://並在Jenkins中設置新路徑後,除非實際上有新提交,否則不再發生構建。

TL,DR:不要使用svn://,而應使用http://。

1

我不確定是什麼原因導致這種情況,但過去我有過很多關於SCM輪詢的問題。我發現編寫一個SVN post-commit觸發器可以更好地工作,它觸發構建的url來觸發它。這消除了輪詢的開銷,並且如果沒有更改,將永遠不會觸發構建。如果你想變得有趣,你甚至可以讓觸發器變得更聰明,避免編譯readme.txt等文件。

+0

是的,我想到了這種方法,但我並不想實現它,因爲我不想假設SVN倉庫中的每個項目都在Jenkins中有相應的構建(是的,我可以修改post-commit只能在一些項目上工作,但是當我想讓Jenkins管理的repo中創建一個新項目時,我必須再次更改它)。 但是,除非讓投票正常工作,否則後提交是我能想到的唯一方法。 – lightstrike

+0

事實證明,我的問題的答案是在詹金斯的回購協議中使用http://協議。顯然它不支持svn://協議。現在一切都適用於這種變化。 – lightstrike

1

我們遇到了類似的CVS問題,CVS輪詢花費的時間比我告訴它輪詢更改的時間要長。也就是說,CVS需要三分鐘時間來輪詢更改,但我告訴它每分鐘輪詢一次。不過這應該不是Subversion的問題。

可以使用後提交鉤子作爲Feasoron說,但有兩個問題與方法:

  • 如果詹金斯/哈德森是下來的時候觸發被擊中,詹金斯/哈德森不會做建立。
  • 如果Jenkins/Hudson服務器(即使只是幾秒鐘)之間有任何時間差異,您最終可能會與Jenkins/Hudson構建版本庫的舊版本版本。

大多數人在Jenkins/Hudson都有Subversion輪詢,並且沒有這些問題,所以它可能與您的設置中的某些內容有關。

查看每個構建的輪詢日誌,瞭解Jenkins/Hudson認爲它看到更新的原因(每個構建可在網頁左側提供鏈接)。也看看你的構建控制檯的前幾行,看看是否提供任何線索。

如果您仍然無法弄清楚,請使用一些輪詢日誌更新您的問題,這可能會幫助我們理解您爲什麼會遇到這些問題。

+0

時間差異實際上取決於你的鉤子 - 我們將修訂號傳遞給Jenkins,並且它構建了該修訂版。我認爲如果你使用在SCM中構建的Jenkins來獲取代碼,這是比較棘手的,但這是可能的。 – Feasoron

+0

@David - 我找到了解決方案,顯然svn://協議不被支持,因爲在我更改了我的SVN服務器和Jenkins以使用http://之後,這些解決方案自動生效。謝謝您的幫助。 – lightstrike