2012-02-21 67 views
2

我配置詹金斯作業上傳文件從Subversion到SFTP。 Publish Over SSH做得很好,但它會上傳每個版本的所有文件。上傳文件從最後svn修訂版到SFTP在詹金斯CI

對於一些項目,我們有成千上萬的文件,上傳成本超過1小時,所以這不是一個選項。

任何人都可以建議一種方法,只上載上次修訂中更改的文件嗎?

+0

有任何答案有幫助嗎? – 2012-04-17 14:29:01

回答

1

您可以使用Subversion Plugin來輪詢SVN更改並運行一個特別不執行任務的任務。我們稱之爲YourPollingJob。然後,通過HTTP調用API詹金斯這樣的:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet 

其中BUILD_ID是你剛剛運行作業的實際版本ID(通常的格式是一樣的東西2012-02-21_16-15-49)。檢查結果。請注意,所有關於自上一次構建之後發生更改的文件的信息 - 您只需要解析它。

所以,現在你可以做到以下幾點:YourPollingJob將調用另一個作業 - 讓我們把它CopyJob - 並傳遞給它的BUILD_ID作爲參數(通過Parameterized Trigger Plugin;請確保調用CopyJob作爲後期構建步驟,而不是構建步驟)。 CopyJob將通過http查詢Jenkins(如上,最好的方法是通過wget來完成),解析結果並進行復制。

你可以在一個工作中完成所有工作,但它有點複雜和難以調試。

此外,每天(每晚)複製整個存儲庫可能比較謹慎。

1

您可以將這些文件保存在單獨的存儲庫中。這聽起來像一個分佈式的VCS,像mercurial或git將是最適合你的情況。您可以在工作區中設置它,並添加構建步驟來提交更改後的文件,並將提交推送到要發佈它的服務器(只要您不擦除工作區或構建幾個工作區機器),或者添加額外的步驟來克隆/拉回來的服務器的工件,你保留它們。