找出shell脚本中最后一次构建的状态

SJu*_*ejo 3 jenkins

我有一个Shell脚本的工作,每30分钟后运行一次,下载并接受来自源代码管理的更改.现在我想继续我的shell脚本当且仅当;

  • 我的工作区OR有新的变化
  • 没有新的变化,但我对同一工作的最后一次运行被标记为不稳定.

我查看了Jenkins wiki,但是从明显的环境变量来看,如果不使用Jenkins XML API或某些python脚本在我的构建中编写代码,就不可能找到"我的上次运行"是稳定还是不稳定...是有没有简单的方法来查找这些信息?

Sla*_*lav 9

您必须使用URL API,除非您想进一步使其复杂化 jenkins-cli

/api/jsonend-point是最容易在shell/bash中使用的,因为它在一行中提供所有信息.然后我们可以为我们需要的数据grep它,去掉前导标识符,并获得结果.

您可以访问当前的内部版本号,BUILD_NUMBER并可以计算前一个版本号.您也可以方便地访问JOB_URL.

#!/bin/bash

# Calculate previous build number
prevBuild=$(($BUILD_NUMBER - 1))

# Get previous run status, returns like: result":"UNSTABLE
prevStatus=`curl -silent http://${JOB_URL}/${prevBuild}/api/json | grep -iEo 'result":"\w*'`

# Strip out leading identifier, i.e: result":"
prevStatus=${prevStatus/result\"\:\"/}

if [[ "$prevStatus" == "UNSTABLE" ]]; then
    do_whatever
fi
Run Code Online (Sandbox Code Playgroud)