首页 文章

检查Jenkins中的作业是否已完成使用shell脚本

提问于
浏览
1

我有这个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但我不希望它失败我的构建我只是希望它在日志上回显一些内容并且构建将继续 .

1 回答

  • 1

    好的,所以解决方法是添加 || ,之后退出代码1的条件,

    对于shell命令失败时要发生的小事情,可以使用 ||

    || if [ "$?" == "1" ];then
    
    
    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 || if [ "$?" == "1" ];then
        GREP_RETURN_CODE=$?
    done
    
    echo Build finished
    

相关问题