2017-02-08 60 views
0

我有一個Jenkins作業,最後將整個工作空間傳輸到另一個服務器,我將啓動應用程序。 我的應用程序是一個Ruby on Rails項目,所以我有很多不同的文件要傳輸。 當然,並不是每個文件都需要傳輸,因爲它沒有改變,但SSH插件無論如何都是這樣做的。Jenkins SSH插件,只傳輸已更改的文件

是否有配置或其他插件,我可以改變這種行爲? 對於具有更大文件的其他項目而言,這尤其有趣。

感謝

回答

5

如果你是的Linux您可以使用rsync,將文件傳送到遠程服務器。

rsync的是著名的Δ-轉移算法,從而降低了 量通過僅發送源文件和現有的文件在目的地之間的差異 通過網絡發送的數據。

因此,它不會傳輸整個工作區,而是傳輸已經被更改,刪除或添加的文件。

至於詹金斯你可以添加一個執行shell構建步驟,然後rsync的工作區,以便通過ssh遠程服務器。

例如:

rsync -avz -e 'ssh -p <post_no>' <path/to/project/workspace/> <username>@<server_ip>:<target/path/to/transfer> 

如果你需要的rsync通過ssh一些更多的信息,請閱讀this鏈接。

對於Windows你可以使用rsync的windows替代,如cwrsync

+1

謝謝。這是一個非常好的選擇,儘管我的私鑰存在一些問題(權限被拒絕錯誤)。事實證明這是不可讀的,因爲ssh需要600個文件的權限,用戶試圖讀取的不是root,這是爲這個文件設置的(我需要jenkins)。修好之後,它就像詹金斯的魅力一樣。 – kinglite