有没有一种方法可以在构建后的shell脚本中获取Jenkins作业的状态?我想打印出消息Build Status is $BUILD_URL :: $BUILD_STATUS,其中$BUILD_STATUS是当前已完成构建的状态(例如ABORTED、SUCCESS或FAILURE)。
Build Status is $BUILD_URL :: $BUILD_STATUS
$BUILD_STATUS
ABORTED
SUCCESS
FAILURE
pcrecxhr1#
我知道这个问题已经过时了,但我可以使用currentBuild变量,例如:
post { always { emailext body: "See ${BUILD_URL}", recipientProviders: [requestor()], subject: "Jenkins: ${JOB_NAME}: Build status is ${currentBuild.currentResult}" } }
字符串
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。
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')
型
ffvjumwh4#
与user3352495的答案相同,但不使用任何python依赖项。我使用jenkins自己的API来获取构建状态,而作业正在运行,这就像一个魅力。请注意,我使用JQ来解析json响应。要实现这一点,只需添加一个shell脚本并执行以下命令:BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')
BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')
的数据结果如下:
的
pbossiut5#
在Jenkins 2.263.2上,我可以使用以下变量获取作业状态。
${BUILD_STATUS}
字符串将其用作构建后插件中的变量。
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
6ojccjat7#
使用${currentBuild.currentResult}变量了解构建后的构建状态
7条答案
按热度按时间pcrecxhr1#
我知道这个问题已经过时了,但我可以使用currentBuild变量,例如:
字符串
i7uaboj42#
如果你可以调用一个python脚本作为构建后的步骤,你可以尝试这样做:
字符串
我已经在Jenkins上测试了URL,它可以工作,但我还没有测试脚本本身,所以要小心。显然,要适当地替换端口号和jobName。
pdtvr36n3#
在我的情况下,我不得不包括API TOKEN,这是我的工作:
字符串
对我来说就是
型
ffvjumwh4#
与user3352495的答案相同,但不使用任何python依赖项。
我使用jenkins自己的API来获取构建状态,而作业正在运行,这就像一个魅力。请注意,我使用JQ来解析json响应。
要实现这一点,只需添加一个shell脚本并执行以下命令:
BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')
的数据
结果如下:
的
pbossiut5#
在Jenkins 2.263.2上,我可以使用以下变量获取作业状态。
字符串
将其用作构建后插件中的变量。
y1aodyip6#
为了补充答案,因为我花了太长时间才找到一个像样的解决方案。
你可以使用这个URL来检查来自任何管道的任何作业。如果curl在自我签名的SSL证书上唠叨你,请确保添加-k选项来跳过检查。
另外不要忘记,如果你在一个安全组后面运行jenkins服务器,你需要允许访问你运行jenkins的端口。
这是我的解决方案,从管道中的shell步骤运行
字符串
6ojccjat7#
使用${currentBuild.currentResult}变量了解构建后的构建状态