1、在jenkins命令行執(zhí)行cd 命令無效
使用過程中,發(fā)現(xiàn)在commond中使用cd是無效的,此時(shí)針對(duì)不同的服務(wù)寫了不同的sh腳本,在內(nèi)部去做目錄的切換。
解決方案:
使用source的方式是cd生效:
source /opt/esmp/jenkins/inbox-model.sh
2、啟動(dòng)腳本的tail -f **log,導(dǎo)致build無法完成
在我們的start.sh腳本中,會(huì)調(diào)用日志查看方法:
log() {
status
if [ ! -z "${pid}" ]; then
log=`lsof -p $pid | grep "logs/.*[0-9]*\.log"| awk '{print $NF}'`
tail -fn 100 $log
fi
}
tail 命令在執(zhí)行腳本后不會(huì)自動(dòng)停止,導(dǎo)致構(gòu)建一支進(jìn)行。
會(huì)一直輸出日志,導(dǎo)致構(gòu)建不能停止,提供一個(gè)監(jiān)聽listener方法,一段時(shí)間后殺死日志進(jìn)程。
解決方案
如下腳本所示,在執(zhí)行start.sh時(shí),同時(shí)執(zhí)行l(wèi)istener函數(shù),每五秒去查看日志進(jìn)程的狀態(tài),達(dá)到50s后,就殺死日志進(jìn)程,使腳本執(zhí)行結(jié)束,同時(shí)項(xiàng)目構(gòu)建完成。
#!/bin/bash
# 監(jiān)聽日志進(jìn)程,一段時(shí)間后殺死日志進(jìn)程,完成構(gòu)建
listener()
{
while true
do
sleep 5
num= `ps -ef | grep 'inbox_model-3.0.jar' | grep -v grep | wc -l`
flag= 1
echo "$num"
if [[ $num -eq $flag ]]; then
sleep 50
echo "項(xiàng)目已啟動(dòng),停止日志打印";
ps -ef |grep "/logs/inbox_model" |grep -v grep|awk '{print $2}' |xargs kill
break;
else
echo "項(xiàng)目啟動(dòng)中";
fi
done
}
sleep 5
cd /opt/esmp
# 當(dāng)文件不存在,即首次部署此項(xiàng)目時(shí),不需要stop
if [ -d "/opt/esmp/inbox-model-3.0" ];then
cd /opt/esmp/inbox-model-3.0
./start.sh stop
cd ../
rm -rf inbox-model-3.0
fi
unzip inbox-model-3.0-bin.zip
cd inbox-model-3.0
./start.sh start & listener
上述的50s可以根據(jù)項(xiàng)目實(shí)際啟動(dòng)的時(shí)間去設(shè)置。
3、找不到MANIFEST.MF
構(gòu)建過程中,可能會(huì)存在找不到MANIFEST.MF的問題,這個(gè)是start.sh腳本中獲取啟動(dòng)參數(shù)的文件。找不同通常是在啟動(dòng)構(gòu)成中沒有生成。直接運(yùn)行start.sh腳本沒有問題。
原因
jar: commond not found,在安裝jdk時(shí)候沒有建立軟連接,導(dǎo)致jar命令找不到。
解決方案
在/usr/bin目錄下創(chuàng)建jar的軟連接
cd /usr/bin
ln -s /usr/java/jdk1.8.0_172-amd64/bin/jar jar
4、環(huán)境變量不生效問題
發(fā)現(xiàn)在有些服務(wù)器沒有此問題,個(gè)別服務(wù)器存在腳本執(zhí)行始終不生效的問題,還是環(huán)境變量導(dǎo)致的問題。
解決方案
在腳本中增加 source /etc/profile

5、硬盤被占滿問題
jenkins構(gòu)建過程很占用硬盤空間,當(dāng)硬盤被占滿后,會(huì)導(dǎo)致無法構(gòu)建、在配置中,git,SSH等憑證無法選擇而報(bào)錯(cuò),如果突然出現(xiàn)這樣的問題,可以考慮是硬盤的問題。
解決辦法
1)新建項(xiàng)目要選擇丟棄舊構(gòu)建的參數(shù),并將參數(shù)設(shè)置的小一點(diǎn),通常來說歷史構(gòu)建對(duì)我們來講是沒用的。
2)構(gòu)建過程中有兩個(gè)文件占用時(shí)很大的(以下兩種方式均不會(huì)影響后面額構(gòu)建,通常清理job最有效):
一個(gè)是job文件夾,此文件夾內(nèi)的內(nèi)容可以直接手動(dòng)刪除;

6、服務(wù)器掉電導(dǎo)致項(xiàng)目丟失
解決辦法
安裝ThinBackup插件

7、項(xiàng)目丟失重新搭建構(gòu)建無效
在重新搭建項(xiàng)目并且構(gòu)建后,發(fā)現(xiàn)沒有反應(yīng),只需要?jiǎng)h除以前的構(gòu)建記錄就可以了。
