Jenkins 找工作';s生成状态为生成后变量

Jenkins 找工作';s生成状态为生成后变量,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,在生成后shell脚本期间,是否有方法获取变量中Jenkins作业的状态 我想打印出消息构建状态为$Build\u URL::$Build\u Status,其中$Build\u Status是当前已完成构建的状态(例如中止,成功,或失败)。如果可以调用python脚本作为构建后步骤,可以尝试以下操作: 导入操作系统、系统、json、编解码器、urllib2 def main(): url=”http://localhost:8080/job/jobName/lastBuild/api/json

在生成后shell脚本期间,是否有方法获取变量中Jenkins作业的状态


我想打印出消息
构建状态为$Build\u URL::$Build\u Status
,其中
$Build\u Status
是当前已完成构建的状态(例如
中止
成功
,或
失败
)。

如果可以调用python脚本作为构建后步骤,可以尝试以下操作:

导入操作系统、系统、json、编解码器、urllib2
def main():
url=”http://localhost:8080/job/jobName/lastBuild/api/json"
尝试:
fRead=urllib2.urlopen(url,None,30);#30秒超时
除:
提升
jsonResponse=json.loads(fRead.read());
fRead.close();
jobStatus=jsonResponse[“结果”]
main();

我已经在我的Jenkins上测试了url,它可以工作,但是我还没有测试脚本本身,所以要小心。显然,请根据需要替换端口号和作业名。

与用户3352495的答案相同,但不要使用任何python依赖项

我正在使用jenkins自己的API在作业运行时获取构建状态,这非常有用。请注意,我正在使用解析json响应

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

其结果如下:


在我的例子中,我必须包括API令牌,这是对我有用的:

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')

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

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

非常感谢您的回复。但我一直得到下面的错误。urllib2.HTTPError:HTTP错误403:禁止我需要使用登录名和密码才能访问Jenkins url吗?您可以尝试使用Jenkins提供的API令牌:本文介绍如何获取和使用令牌。然后根据需要修改脚本中的url;print json.load(sys.stdin)[“result”]'这很好。您可以使用
?tree=result
附加URL以获得类似
{“\u class:“hudson.model.FreeStyleBuild”,“result:“SUCCESS”}
-然后我只是检查子字符串
SUCCESS
,以确定最终状态(只要我喜欢
jq
,我不想在所有构建从属上安装它),这太棒了。谢谢你仍然发布这个。节省了我几个小时!这是要实现的最简单的解决方案。