【发布时间】:2017-08-21 08:58:51
【问题描述】:
我有这个 shell 脚本可以检查特定的 Jenkins 作业是否正在运行:
JOB_URL=http://jenkins.local/job/stevehhhbuild
JOB_STATUS_URL=${JOB_URL}/lastBuild/api/json
GREP_RETURN_CODE=0
# Start the build
curl $JOB_URL/build?delay=0sec
# Poll every 7seconds until the build is finished
while [ $GREP_RETURN_CODE -eq 0 ]
do
sleep 7
# Grep will return 0 while the build is running:
curl --silent $JOB_STATUS_URL | grep result\":null > /dev/null
GREP_RETURN_CODE=$?
done
echo Build finished
我把这个脚本放在一个 Jenkins shell 步骤中,它会做它应该做的事情:
每 7 秒轮询一次,直到构建完成 - 一旦构建完成,我会得到一个退出代码 1,这会导致我的构建失败。
有没有办法可以“避免”退出代码?
意义——
如果正在进行构建,则 grep for result\":null 将返回 0。
如果构建完成,grep for result\":null 将返回 1,但我不希望它失败我的构建我只是希望它在日志上回显某些内容并且构建将继续。
【问题讨论】:
-
你不能在最后加上exit语句吗?所以像 if [ "$?" == "1" ] 然后;退出 0;fi
-
我放了一个额外的 if,但它没有到达那里它在出口 1 之前然后构建失败@RamanSailopal