jenkins 获取作业的生成状态作为生成后变量

mrwjdhj3  于 6个月前  发布在  Jenkins
关注(0)|答案(7)|浏览(74)

有没有一种方法可以在构建后的shell脚本中获取Jenkins作业的状态?
我想打印出消息Build Status is $BUILD_URL :: $BUILD_STATUS,其中$BUILD_STATUS是当前已完成构建的状态(例如ABORTEDSUCCESSFAILURE)。

pcrecxhr

pcrecxhr1#

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

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

字符串

i7uaboj4

i7uaboj42#

如果你可以调用一个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上测试了URL,它可以工作,但我还没有测试脚本本身,所以要小心。显然,要适当地替换端口号和jobName。

pdtvr36n

pdtvr36n3#

在我的情况下,我不得不包括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')

ffvjumwh

ffvjumwh4#

与user3352495的答案相同,但不使用任何python依赖项。
我使用jenkins自己的API来获取构建状态,而作业正在运行,这就像一个魅力。请注意,我使用JQ来解析json响应。
要实现这一点,只需添加一个shell脚本并执行以下命令:BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')


的数据
结果如下:


pbossiut

pbossiut5#

在Jenkins 2.263.2上,我可以使用以下变量获取作业状态。

${BUILD_STATUS}

字符串
将其用作构建后插件中的变量。

y1aodyip

y1aodyip6#

为了补充答案,因为我花了太长时间才找到一个像样的解决方案。
你可以使用这个URL来检查来自任何管道的任何作业。如果curl在自我签名的SSL证书上唠叨你,请确保添加-k选项来跳过检查。
另外不要忘记,如果你在一个安全组后面运行jenkins服务器,你需要允许访问你运行jenkins的端口。
这是我的解决方案,从管道中的shell步骤运行

BUILD_STATUS=$(curl -k --user USER:apiToken --silent https://your.jenkins.url/job/yourJobName/lastBuild/api/json | jq -r '.result')
STATUS="SUCCESS"

            if [ $BUILD_STATUS == $STATUS ];
            then
                echo 'big yay'
                exit 0
            else
                exit 1
            fi

字符串

6ojccjat

6ojccjat7#

使用${currentBuild.currentResult}变量了解构建后的构建状态

相关问题