2012-11-02 23 views
4

我剛從Jenkins 1.487開始,並希望將Jenkins集成到我的Ant項目中。但是在配置它時,我找不到任何讓Jenkins重新使用已經檢出的代碼庫的方法,而不是下載相對於其工作空間根目錄的新副本。有沒有辦法做到這一點 ?如何讓jenkins使用已經簽出的代碼庫?

我試圖手動指定一個自定義工作區(我的代碼庫已經簽出),然後單擊「立即生成」。其結果是,它消滅了我當前的簽出碼說

"Checking out a fresh workspace because there's no workspace at /home/daud/Work 
Cleaning local Directory ." 

甚至沒有警告..

+0

你所指的是「增量構建」。 afaik這取決於您使用的版本控制系統。在使用git時,執行增量構建是默認設置。另見[這個問題](http://stackoverflow.com/questions/5383136/git-and-hudson-jenkins-how-to-do-incremental-builds-only)。你使用的是什麼VCS? – Marijn

+0

我正在使用SVN ..當我試圖指定一個手動工作區(代碼已存在)時,它表示「檢出一個新的工作區,因爲/ home/daud/Work 沒有工作區清理本地目錄。」並刪除了我的舊代碼:( – Daud

回答

6

如果您真的想從現有的文件系統上的某個位置進行構建,請不要使用Jenkins的「源代碼管理」部分。把它作爲「無」

  • 直接前往「構建」部分
  • 點擊 「添加生成步驟」
  • 選擇調用Ant」
  • 單擊高級
  • 而下「生成文件」(Build File)爲文件系統上的ant構建文件提供一個完整路徑,您必須包含驅動器盤符(如果在Windows上)或領先的/(如果在Linux上)從工作區中斷開(默認情況下,這條路是相對於Works而言的步伐)。如果需要,或者使用很多../../../ ..

但是,像其他人所說,這不是一個CI系統應該使用

+0

謝謝..我只想重用現有的構建(每個服務器上都有本地更改,這是特定於該服務器的,如果我檢出新構建,則必須再次進行這些本地更改)。我希望SVN更新發生(所以源代碼管理不能爲空) – Daud

+0

你真的需要澄清你的問題。你想要SVN更新?你想讓Hudson執行SVN更新?如果沒有,我已經給你解決方案。如果你確實希望Hudson執行SVN更新,那麼就這樣設置它。每個不在SVN簽出的服務器上存在哪些「本地更改」?這些未受版本控制的文件是?如果是這樣,哈德森SVN更新將忽略未版本控制的文件,除非您告訴它使用「恢復」或「新鮮結賬」。如果它們經過版本控制和修改,它們在從Hudson或其他方式進行SVN更新時會表現相同(它們將與最新更改合併) – Slav

+0

一旦您讓Hudson執行初始檢出,您就可以在Hudson工作區上執行SVN操作根據需要簽出文件夾。它不會每次都刪除它,除非你的SVN URL改變了 – Slav

1

背後詹金斯和CI的想法是,它的工作原理上的代碼庫的新鮮副本。詹金斯所做的每個構建應該是而不是取決於任何外部先決條件,並且應該是可重現的。

+0

我只是試圖避免再次下載整個項目..是​​否有可能嗎? – Daud

+2

一旦您下載整個項目一次,它只會查找更改(除非您更改「退出策略「,每次都做一次新的結帳),非常值得一次性退房 – Slav

0

您可能需要使用Clone Workspace SCM Plugin詹金斯嘗試的方式。它將允許您從一個作業中壓縮工作區,並使用它爲另一個工作區創建工作區。我已經將它用於需要根據以前的工作來完成工作的下游工作。

如果您使用類似Git的源代碼控制並希望避免第二個Git克隆(或SVN簽出),這也很有用。此外,您可以限制用於重新創建工作區的zip文件的內容,例如爲了避免在下游攜帶不必要的文件(例如.git.svn目錄)。

相關問題