我正在运行一个Jenkins脚本来构建Jenkins程序并准备它的环境。我发布了脚本中挂起的部分。它挂在while [[ "$ENDPOINT_STATUS" != 0 && (( $COUNTER < 5 )) ]]行中。有人能告诉我问题出在哪里吗?
##############
## wait until config wizard exits
while [ $($SSH pgrep -f /opt/company/grapevine/bin/grapevine_config_wizard | wc -l) -ne 0 ]
do
echo "Config wizard still running. Sleeping..."
sleep 30
done
$SSH chmod -v 755 /home/grapevine/.python-eggs || true
$SSH chown -vR grapevine:grapevine /home/grapevine/.python-eggs || true
source $WORKSPACE/tools/dev/quick-sanity/poormans-quick-sanity.sh "$CONTROLLER_IP"
set +e
run_basic_tests "$CONTROLLER_IP"
ENDPOINT_STATUS=$?
set -e
COUNTER=0
while [[ "$ENDPOINT_STATUS" != 0 && (( $COUNTER < 5 )) ]]
do
echo "At least one endpoint is not up. Sleeping..."
sleep 60
set +e
run_basic_tests "$CONTROLLER_IP"
ENDPOINT_STATUS=$?
set -e
(( COUNTER += 1 ))
done
if [ "$ENDPOINT_STATUS" -ne 0 ]
then
echo "Hard fail Failing"
exit 1
fi
if [ $($SSH service runonce status | grep ERROR | grep config_wizard | wc -l) -gt 0 ]
then
echo "Config wizard failed with errors:"
$SSH cat /var/log/runonce/config_wizard*.log
exit 1
else
echo "Config wizard succeeded"
echo "Sleeping while Grapevine services start..."
sleep 300
exit 0
fi发布于 2015-03-22 11:25:43
与其说是Jenkins的问题,不如说是bash脚本问题。
您了解端点的相关信息吗?你试过手动测试吗?也许有一些事情正在进行,它不会很快失败,但会永远将连接留在“无所作为的过程中”。
发布于 2015-03-22 17:56:04
我还在学习,但我注意到了一些事情。
$或FOO=$((COUNTER++))(()),只需进行运算,例如FOO=$COUNTER或FOO=$((COUNTER++))-a而不是在双括号内的&&,请使用-ne而不是!=在双括号[[]]中。(字符串使用==,!= )例如……
while [[ $ENDPOINT_STATUS -ne 0 ]] && [[ $COUNTER -lt 5 ]]或者..。
while [[ $ENDPOINT_STATUS -a $COUNTER -lt 5 ]]Arithmetic and String Comparison
http://tldp.org/LDP/abs/html/testconstructs.html#EX10
(第三个链接被拒绝lol)
https://stackoverflow.com/questions/29190593
复制相似问题