jenkins中shell是按照shell的順序依次執(zhí)行的跨琳,每次拿到一個shell的返回值才會進行下一項自点,如果通過appium命令行啟動必然進入不了其他shell繼續(xù)執(zhí)行測試。由于jenkins本身會殺死衍生出來的進程脉让,所以通過nohup啟動appium也會被殺掉桂敛。
通過如下方法解決
在jenkins的第一個Execute shell中填寫
#!/bin/bash
ps -aef |grep appium
rm -rf appium.log
touch appium.log
appium_log_content=`cat appium.log`
while [ ${#appium_log_content} -le 666 ]; do
appium_log_content=`cat appium.log`
bash startAppium.sh
echo "appium still not started!"
sleep 2
done
ps -ef |grep appium
cat appium.log
sleep 2
在項目的根目錄增加startAppium.sh
腳本功炮,腳本內(nèi)容如下:
nohup node /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js >>appium.log 2>&1 &
中間執(zhí)行測試用例,結(jié)尾處安全退出术唬。增加Execute shell:
ps aux |grep appium |grep -v grep |awk '{print $2}' |xargs kill -9