4

我想讓詹金斯使用scp插件將構建的構件複製到另一臺服務器上的存檔目錄。如何讓jenkins將工件複製到動態目錄中?

理想情況下,我希望能夠有目的地是動態的基礎上,構建版本,所以結果想類似/builds/<build version>/

對於構建版本1.2.3.4像它看起來像:

/builds/1.2.3.4/ 

從閱讀scp插件頁面,它看起來不像這是可能的,但我想這裏的某個人可能已經想通了。

有沒有辦法做到這一點?

將文件中嵌入文件名的工件放在一個目錄中是否更好?

回答

4

就像你說的,我不認爲scp插件可以直接做。但是,可能有解決方法。

在您的構建中,您可以使用$ BUILD_NUMBER(或%BUILD_NUMBER%,視情況而定 - > Linux vs Windows)訪問內部版本號。

在任何情況下,作爲腳本的一部分,你可以創建一個$ BUILD_NUMBER目錄的名稱,那麼:

的mkdir -p $ BUILD_NUMBER

- 或 -

MD% BUILD_NUMBER%

因此,舉例來說,一個新的目錄將/path/to/workspace/1.2.3.4

一旦構建完成,你的SCR結束ipt,創建上面的目錄,將你的工件移入它,然後tar/zip目錄。

使用此tar/zip文件作爲您工作的工件。

使用SCP插件這神器傳送到目標機器,並解壓/也把它解壓(假設在/路徑/到/神器/目錄

,你將有什麼的話,就是/path/to/artifact/directory/1.2.3.4

對於下一個版本,比如說1.2.3.5,您將創建一個新目錄(名稱爲1.2.3.5),在構建結束時將您的工件移入其中,並將其壓縮並傳輸。 當您在目的地解壓縮它時,您將擁有一個新目錄/path/to/artifact/directory/1.2.3.5,其中包含新構建的工件。

我知道這聽起來很混亂,但實際上很容易實現。

+0

聽起來不錯,我會嘗試。我也在詹金斯板上得到了類似的答案。感謝您的幫助! – afrosteve 2011-03-18 15:19:05

+1

我們正在Jenkins中運行maven2構建,所以我們沒有腳本來完成所有這些工作......即在Maven運行並構建成功之後捆綁Jenkins工件。Maven2作業的作業配置僅允許使用語法來存檔,但不允許將其存檔到網絡設備或scp位置。那可能嗎? – djb 2011-04-13 18:52:31

+0

您可以在maven的東西運行之前始終使用「Execute Shell」,並創建一個以$ BUILD_NUMBER命名的目錄。然後,您可以使用Maven在該目錄中創建工件,或者在Maven完成後再次使用「Execute Shell」移動工件。它不必是一個單獨的腳本。這有道理,有點: - \? – Sagar 2011-04-13 19:19:12

相關問題