2009-02-14 51 views
0

我們組織的自定義構建工具寫出了大量的中間數據,如果Hudson能夠檢測到哪些文件是作爲構建的一部分創建並存檔的,我希望它可以。我不確定它是否已經這樣做,但如果它確實沒有用戶可見的解釋,並且確實刪除一個構建不會刪除它的輸出。哈德森如何刪除我的構建創建的工件?

這裏是我想要的。假設我從一個裸露的工作區開始。構建1之後,我有這樣的:

ws/ 
    src/... 
    obj/ 
    1/... 
    log/ 
    1/... 
    pkg/ 
    pkg-1.tgz 

現在,我運行建立2:

ws/ 
    src/... 
    obj/ 
    1/... 
    2/... 
    log/ 
    1/.. 
    2/.. 
    pkg/ 
    pkg-1.tgz 
    pkg-2.tgz 

源代碼檢出到ws/src每個構建;有一個自定義的結帳過程,所以我不能使用svn RCS方法:/。

當我刪除一個構建,我想刪除所有來自該構建。我可以這樣做嗎?

回答

3

Hudson的方法是在構建開始時清理所有臨時文件,然後使用Hudson的構件存檔工具保存每個構建的輸出 - 指定pkg/**/*。tgz作爲「存檔工件「後建立步驟,然後tgz文件將全部複製到作業特定的存儲區域。

工作區只是一個工作區 - 它不適合長期存儲。

0

如果不理解您的「自定義結賬過程」,很難回答,但通常項目的所有構建工件都創建在src以外的單個目錄下,例如, 「構建」或「目標」。

這樣,項目的「乾淨」目標可以簡單地刪除該目錄,並且您可以指示Hudson爲每個構建包含此目標。

看起來你的構建工件包含在多個相對於'src'的目錄中:'obj','log'和'pkg'。你能否引入一個「乾淨」的目標,將明確刪除每個目錄?

+0

我可以,但是如何讓哈德森在我刪除工作時運行? – 2009-02-14 20:45:24

1

我會做什麼,如果我在你的鞋子,將是以不同的方式解決問題。我會編寫一個任務或腳本,專門刪除您不想保留的所有內容,並在每項作業結束時運行該任務或腳本。

哈德森假設你正在自己清理臨時文件。如果這沒有發生,我不認爲哈德森有任何設施可以幫助你。

0

爲什麼你需要tgz檔案製作在每一個構建觸發?

當我刪除一個構建時,我想刪除來自該構建的所有內容。我可以這樣做嗎?

提取版本號到系統/構建工具的變量,和3個簡單的UNIX shell命令: * 2用於目錄中的obj刪除和日誌 *一個用於包刪除由掩模(需要注入變量的值)