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

时间:2014-04-27 10:10:26

标签: jenkins

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

  • 我的工作区中有新的更改或
  • 没有新的更改,但我上次为同一份工作进行的操作被标记为不稳定。

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

2 个答案:

答案 0 :(得分:8)

您必须使用网址API,除非您想进一步使用jenkins-cli

进一步复杂化

/api/json端点是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

答案 1 :(得分:4)

您可以直接将curl调用到http:// $ {JOB_URL} / lastBuild / api / json

无需获得prev build编号。