Jenkins在自動化構建服務的同時也在消耗服務器的磁盤空間,如果構建的項目個數很多,而Jenkins 服務器磁盤空間又不是非常大的話,每隔一段時間磁盤空間就會爆滿導致,就會出現磁盤空間不足無法構建的后果。這時候就需要進行一定的手工干預才能恢復Jenkins的正常運作。
解決方案:
1.執行命令:df
查看哪個掛載點滿了
2.執行命令:du -sh /* | sort -nr
查看哪個目錄占用空間最大(逐層查看,可以定位出哪個目錄最大)
最后定位到 /usr/tomcat/tomcat-jenkins/webapps/jenkins/jobs/modules占據空間最大,將其內容清空后重新構建,成功。
其他解決方案:
本文基於Windows操作系統,結合Jenkins 的相關特性解決上述問題。
1.手工刪除構建記錄
這是最基本的一種操作方法,通過直接物理刪除構建記錄進行磁盤空間管理。手工刪除構建記錄方式如下:
(1).進入Jenkins根目錄,Windows下默認位於當前用戶目錄中的.jenkins文件夾。
(2).手工刪除構建記錄,構建記錄位於.jenkins\jobs\XXX\builds中(其中XXX為具體項目名稱),以時間戳方式進行組織。根據需要直接刪除對應的構建歷史即可。
二、轉移磁盤空間
轉移磁盤空間的思路是通過改變Jenkins的默認主目錄達到把構建記錄轉移到其他磁盤的方式。以Windows系統為例,通常用戶目錄所在的磁盤會安裝很多軟件導致磁盤空間處於不充裕的狀態,而其他磁盤空間則可以進行動態划分和管理。如果能把Jenkins構建記錄存放到相對較大而又可以動態管理的空間中無疑會在很大程度上解決磁盤空間不足的問題。具體操作方式也非常簡單:
(1).創建Jenkins根目錄環境變量JENKINS_HOME,將該環境變量映射到具體某個工作目錄
(2).重啟Jenkins即可
轉移磁盤空間只是一種相對優化的策略,如果構建需求量非常巨大,該策略通常也是治標不治本,所以還有第三種策略。
3、自動丟棄構建歷史數據
一次構建包含兩方面的產物:構建記錄和構建工件。構建記錄是一種跟蹤、分析和反饋的依據,具有保存價值;而已經過時的構建工件則通常可以直接丟棄。基於以上思路,Jenkins為我們提供了“丟棄舊的構建”配置功能,通過進行合理配置即可達到保存構建記錄丟棄構建工件的效果,配置方式如下:
通過限制“發布包最大保留#個構建”就可以自動確保該項目對應的構建結果中只保存最近若干次的構建工件,從而優化磁盤空間的使用效率。
4、小結
通過上述三種策略,我們可以在實際工作中選擇其中的一種或多種,確保Jenkins服務的穩定。