2017-04-06 224 views
1

我想知道是否可以從作業工作區刪除一個構建(包括工件)。如何從Jenkins作業工作區刪除構建

我試圖在構建歷史中「刪除構建」,但它所做的只是從構建歷史記錄表中刪除構建引用。我知道我可以ssh到服務器,並從命令行刪除文件,但我正在尋找一種方法,從詹金斯的網頁界面。

安裝Workspace Cleanup Plugin後,我可以清除當前工作區,但我想讓其他構建保留在工作區中。

+0

「刪除構建」不僅僅是刪除引用。什麼文件你沒有看到得到清理? – BMitch

+0

如果您已經配置Jenkins來存檔構建的* artifacts *,那麼Jenkins將在刪除構建時刪除這些構件,但Jenkins不會將構件存儲在作業的工作區中。您的工作負責管理工作區。聽起來您需要配置Jenkins以歸檔相應的工件並停止使用作業的工作空間進行存儲。 –

+0

@BMitch當運行作業時,我的腳本從網絡位置下載一些位圖並將它們保存在作業工作區(JOB_NAME/ws/BUILD_NO /)中。構建完成後,我想保留這些文件,因爲其他團隊可能需要它們進行進一步分析。後來,當我用完空間時,我需要刪除一些構建,但不需要最老的構建。當我從Build History表中刪除它們時,位圖仍然佔用磁盤空間。 –

回答

4

在您的Jenkins實例中,爲了能夠在作業設置中擁有文件夾/每個構建 - 設置標誌「使用自定義工作區」。下面是從設置描述的一個簡短的幫助信息:

For each job on Jenkins, Jenkins allocates a unique "workspace directory." 
This is the directory where the code is checked out and builds happen. 
Normally you should let Jenkins allocate and clean up workspace directories, 
but in several situations this is problematic, and in such case, this option 
lets you specify the workspace location manually. 
One such situation is where paths are hard-coded and the code needs to be 
built on a specific location. While there's no doubt that such a build is 
not ideal, this option allows you to get going in such a situation. 

... 

以及自定義目錄路徑應該是這樣的:

workspace\$JOB_NAME\$BUILD_NUMBER ~> workspace\my-job-name\123 

其中$ JOB_NAME將「我的崗位名稱」和$ BUILD_NUMBER是內部編號,eq。 「123」。

這種方法存在一個令人討厭的問題,這就是爲什麼我不會推薦使用它 - Jenkins將無法回收用於過時構建的磁盤空間。你將不得不手動清理過時的構建,這是一個很大的麻煩。

另一種方法,即爲您提供更多控制,工具,並能夠控制磁盤空間使用(無需您的監督),即使用默認工作區設置並存檔構建輸出(文件,原始源代碼,庫等) )作爲後期製作行動。非常非常方便,您可以訪問大量優秀工具,如Copy Artifact PluginArtifactDeployer Plugin在其他工作中。

希望信息能幫助您做出最適合您需求的決定。

0

我也是在Windows機器上使用「普通/高級/使用自定義的工作空間」(如@ pabloduo的回答)的東西,如:

C:\${JOB_NAME}\${BUILD_NUMBER} 

只是想添加一個解決方案,擺脫構建工作的工作空間。

我爲此使用Groovy Events Listener Plugin

使用插件的標準配置的話就用下面的Groovy腳本:

if (event == Event.JOB_DELETED){ 
    new File(env.WORKSPACE).deleteDir() 
} 

現在當構建作業被刪除自定義的工作空間被刪除。

只需注意這也會刪除非自定義工作區(因爲您的Jenkins服務器上的所有作業都會觸發該事件)。

相關問題