【问题标题】:check if job in Jenkins finished using shell script检查 Jenkins 中的工作是否使用 shell 脚本完成
【发布时间】: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

标签: bash shell jenkins


【解决方案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

【讨论】:

    【解决方案2】:

    我已回复https://serverfault.com/questions/309848/how-do-i-check-the-build-status-of-a-jenkins-build-from-the-command-line/980448#980448

    JOB_URL=http://localhost:8080/view/TestTab/job/JobWait
    JOB_STATUS_URL=${JOB_URL}/lastBuild/api/json
    
    GREP_RETURN_CODE=0
    
    # Start the build
    curl --user "username:password" $JOB_URL/build?delay=0sec
    
    # Poll every 10 second  until the build is finished
    while [ $GREP_RETURN_CODE -eq 0 ]
    do
        sleep 10
        # Grep will return 0 while the build is running:
        curl --user "username:password" --silent $JOB_STATUS_URL | grep result\":null > /dev/null || if [ "$?" == "1" ]; then
           exit 0
        fi
    
        GREP_RETURN_CODE=$?
    done
    echo Build finished
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 2018-06-14
      • 2021-06-06
      • 2017-03-21
      • 1970-01-01
      • 2015-06-28
      相关资源
      最近更新 更多