[Python]python-jenkins获取正在构建中的job
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[Python]python-jenkins获取正在构建中的job,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3310字,纯文字阅读大概需要5分钟。
内容图文
需求:
我现在需要完成1个接口,这个接口会启动jenkins构建jobA,
jobA构建结束, 返回job的构建结果
思路:
首先使用get_job_info获取最后1次构建的构建序号,然后再通过get_build_info根据最后1次构建序号,来获取最后1次的构建结果
lastbuildNumber=server.get_job_info(name)['lastBuild']['number'] build_state = server.get_build_info(name,lastbuildNumber)['result']
遇到问题:
但困难是,通过api启动jenkins构建job,这个job总会有一段pending期,可能会是在4~6秒之间
如果我在这4~6秒之间使用get_build_info去获取Job的构建结果,它获取的将不是我想要的"最后1次"构建结果,而获取到的会是"上1次"构建结束之后的构建结果
举例说明:
当前构建序列号是505
我启动job后,构建序号是506,但这次构建正处于pending期
所以获取到的lastbuildNumber值并不是506,而是505
这样,当我通过get_build_info(name,lastbuildNumber)获取到的构建信息就是第505次构建的信息,而我期望获得是第506次构建信息
解决办法:
get_queue_info()这个方法可以获取正在排队构建的job队列 即pending状态中的所有job,如果没有 pending状态的job即返回1个空列表
我们可以这样判断:
通过get_queue_info获取当前正在构建的job列表
轮询get_queue_info,直到jobA不出现在这个队列中,说明已经成功启动了JobA
代码示例:
queue_info=server.get_q
print(queue_info)
if queue_info: for queue_job_info in queue_info: if queue_job_info['task']['name'] == 'export_apk': msg='pending期,排队构建中' print('') else: #获取job的最后次构建号 lastbuildNumber=server.get_job_info(name)['lastBuild']['number'] build_state = server.get_build_info(name,lastbuildNumber)['result'] print(build_state,type(build_state)) #构建结束 SUCCESS|FAILURE 构建中None <class 'str'> if build_state == 'SUCCESS': msg='构建成功' result='111111' # return '测试结果' elif build_state == 'FAILURE': msg = '构建失败' result ='222222' elif build_state =='None': msg='构建中,请稍后获取测试结果'
官方文档:
内容总结
以上是互联网集市为您收集整理的[Python]python-jenkins获取正在构建中的job全部内容,希望文章能够帮你解决[Python]python-jenkins获取正在构建中的job所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。