Jenkins 找工作';s生成状态为生成后变量
在生成后shell脚本期间,是否有方法获取变量中Jenkins作业的状态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
我想打印出消息
构建状态为$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
,我不想在所有构建从属上安装它),这太棒了。谢谢你仍然发布这个。节省了我几个小时!这是要实现的最简单的解决方案。