詹金斯工作建立状态

时间:2014-03-08 03:01:13

标签: jenkins jenkins-plugins

有没有办法在Post Build shell脚本中获取变量中Jenkins作业的状态。 我想打印出如下信息。

"Build Status is $BUILD_URL  :: $BUILD_STATUS"

($ BUILD_STATUS是当前已完成构建的状态,例如:ABORTED,SUCCESS,FAILURE)

4 个答案:

答案 0 :(得分:6)

就我而言,我必须在这里包含API TOKEN才对我有用:

BUILD_STATUS=$(curl --user USER:TOKEN_VALUE --silent $BUILD_URLapi/json | jq -r '.result')

对我来说是:

BUILD_STATUS=$(curl --user robert:valueofmysecrettoken --silent $BUILD_URLapi/json | jq -r '.result')

答案 1 :(得分:5)

如果你可以调用python脚本作为后期构建步骤,你可以尝试这样的事情:

import os, sys, json, codecs, urllib2

def main():
    url = "http://localhost:8080/job/jobName/lastBuild/api/json"
    try:
        fRead = urllib2.urlopen(url, None, 30); # 30 second timeout
    except:
        raise
    jsonResponse = json.loads(fRead.read());
    fRead.close();
    jobStatus = jsonResponse["result"]

main();

我已经在我的Jenkins上测试了网址并且它有效,但我没有测试过脚本本身,所以请小心。显然,请根据需要替换端口号和jobName。

答案 2 :(得分:5)

与user3352495的答案相同,但不使用任何python依赖项。

我正在使用jenkins自己的API来获取作业运行时的构建状态,这就像一个魅力。请注意,我正在使用JQ来解析json响应。

要使其工作,只需添加一个shell脚本并执行以下命令:BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')

Execute shell step

结果如下:

Job console

答案 3 :(得分:2)

我知道这个问题已经过时,但是我可以使用currentBuild变量,例如:

   post {
     always {
       emailext body: "See ${BUILD_URL}", recipientProviders: [requestor()], subject: "Jenkins: ${JOB_NAME}: Build status is ${currentBuild.currentResult}"
     }
   }
相关问题