jenkins中使用指令碼來節省資源空間和使用shell提取檔名或目錄名的方法
阿新 • • 發佈:2019-02-03
環境
Linux:5.5
jenkins:2.5
場景
由於公司的專案不斷增多,導致jenkins
拉取的專案也就越來越多,專案的程式碼、jar包
、資原始檔,佔用了很多磁碟空間;而且有些資源是重複的!
比如專案的jar包
就是重複的。
當專案部署到jenkins
後,jenkins
會給每個專案都建立一個工作目錄,這個工作目錄就是裡面就是我們拉取的專案。
基於上面的情形,我想了下,還可以優化下,就是把jar包
統一放到一個目錄下。
目錄結構
我jenkins
專案程式碼路徑:/home/jenkins/workspace
。
下圖是裡面的專案名:
指令碼
完整的指令碼,很簡單:
cd ${WORKSPACE%/*}
./mvlib.sh ${WORKSPACE##*/}
而mvlib.sh
的內容就是:
#!/bin/bash
cd $1
mv `find . -path "*/lib/*" -name "*.jar"` ../lib/
稍微講解下:
${WORKSPACE%/*}
中的WORKSPACE
是jenkins
的內建變數,表示當前專案的工作目錄。而後面的%/*
的意思是從右邊開始的第一個/
(包括/
)開始,後面的內容都刪除掉。
比如:WORKSPACE
的路徑是:/home/jenkins/workspace/ggnews-pro
那麼${WORKSPACE%/*}
,顯示的結果就是:/home/jenkins/workspace
${WORKSPACE##*/}
中的##*/
表示的是從左邊開始,刪除最後一個/
以後的內容,包括/
。
${WORKSPACE##*/}
結果就是:ggnews-pro
。
總結
這一塊是純指令碼知識。