環境
Linux:5.5
jenkins:2.5shell
場景
因爲公司的項目不斷增多,致使jenkins拉取的項目也就愈來愈多,項目的代碼、jar包、資源文件,佔用了不少磁盤空間;並且有些資源是重複的!centos
好比項目的jar包就是重複的。bash
當項目部署到jenkins後,jenkins會給每一個項目都建立一個工做目錄,這個工做目錄就是裏面就是咱們拉取的項目。優化
今天jenkins,出現不能使用的狀況,緣由是磁盤空間不夠,我以前也處理過一次,
能夠參考 centos7中根據文件大小排序以及jenkins配置每週刪除一次jobs日誌信息。centos7
而此次磁盤不夠處理情形是:Linux中啓動jenkins時報No space left on device錯誤的解決辦法。spa
基於上面的情形,我想了下,還能夠優化下,就是把jar包統一放到一個目錄下。.net
目錄結構
我jenkins項目代碼路徑:/home/jenkins/workspace。日誌
下圖是裏面的項目名: blog
腳本
完整的腳本,很簡單:排序
cd ${WORKSPACE%/*}
./mvlib.sh ${WORKSPACE##*/}
1
2
而mvlib.sh的內容就是:
#!/bin/bash
cd $1
mv `find . -path "*/lib/*" -name "*.jar"` ../lib/
1
2
3
稍微講解下:
${WORKSPACE%/*} 中的WORKSPACE是jenkins的內置變量,表示當前項目的工做目錄。然後面的%/*的意思是從右邊開始的第一個/(包括/)開始,後面的內容都刪除掉。
好比:WORKSPACE的路徑是:/home/jenkins/workspace/ggnews-pro
那麼${WORKSPACE%/*},顯示的結果就是:/home/jenkins/workspace
${WORKSPACE##*/}中的##*/表示的是從左邊開始,刪除最後一個/之後的內容,包括/。
${WORKSPACE##*/}結果就是:ggnews-pro。
這一塊能夠參考: Linux shell 之 提取文件名和目錄名的一些方法