[Python]python-jenkins获取正在构建中的job
需求:
我现在需要完成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<class 'str'> 构建中None None <class 'NoneType'>
if build_state == 'SUCCESS':
msg='构建成功'
result=''
# return '测试结果'
elif build_state == 'FAILURE':
msg = '构建失败'
result =''
elif build_state is None:
msg='构建中,请稍后获取测试结果'
官方文档:
[Python]python-jenkins获取正在构建中的job的更多相关文章
- Jenkins 六: 构建中执行shell或者 windows的批处理程序
Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...
- python raw String 获取字符串变量中的反斜杠
常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...
- Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码
通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 ...
- python xlrd 模块(获取Excel表中数据)
python xlrd 模块(获取Excel表中数据) 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了pyt ...
- 用Python批量裁取图,来获取文件夹中所有图片名
批量截图(截取正方形图,哪个边短就用哪个边作为标准来截取) 功能是裁取图片中红色框的部分. 代码为: import sys from tkinter.tix import Tk from PIL im ...
- Python之uiautomation模块-获取CMD窗口中所打印的文字信息
当我们想以自动化的方式操作软件,以提高办公或测试效率时,有许多成熟的工具,比如针对Web端应用的Selenium.针对移动端应用的Appium.那么,PC端(Windows)桌面应用,又改如何处理呢? ...
- python实现获取文件夹中的最新文件
实现代码如下: #查找某目录中的最新文件import osclass FindNewFile: def find_NewFile(self,path): #获取文件夹中的所有文件 lists = os ...
- Python之获取文件夹中文件列表以及glob与fnmatch模块的使用
获取文件夹中的文件列表 print(os.listdir("../secondPackage")) # ['__init__.py', 'secondCookBook.py', ' ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
随机推荐
- LInux基于nginx与OpenSSL实现https访问
注意!!首先在nginx安装时添加--with-http_ssl_module模块,否则将会报错,只能从头开始了 自建证书: 通过openssl命令(软件包:openssl :openssl-deve ...
- JS批量绑定事件
,,,,] for(var j in a){ $("#" + j).click(function () { // 前提是先动态生成id是j的标签 var id_cm = $(thi ...
- openGL中的gl,glu,glut
OpenGL函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等.gl是核心,glu是对gl的部分封装.glx ...
- windows安装PostgreSQL
犹豫了一小下,初学不在linux下安装sql,虽然说书上有,还是想记录一下,以后好找 入门的书籍是SQL基础教程第二版,图书馆搜刮来的,毕竟要还 下载页面 http://www.enterprised ...
- Java 实现的 简单WordCount功能
githup 链接:https://gitee.com/iy2524/WordCount.git PSP表格 psp2.1 psp阶段 估计耗时(分钟) 实际耗时(分钟) Planning 计 ...
- BZOJ 2809: [Apio2012]dispatching(可并堆 左偏树板题)
这道题只要读懂题目一切好说. 给出nnn个点的一棵树,每一个点有一个费用vvv和一个领导力aaa,给出费用上限mmm.求下面这个式子的最大值ax∗∣S∣ ( S⊂x的子树, ∑iv[i]≤m )\la ...
- 2019CCPC秦皇岛(重现赛)-D
链接: http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1004&cid=872 题意: 给定一个正整数 n,要求判断 1 ...
- Ribbon整合Consul,出现No instances available for XXX 异常
先贴代码: @RestController public class CallHelloController { @Autowired private LoadBalancerClient loadB ...
- hdu 6076 Security Check
题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6076 2017 Multi-University Training Contest - Team 4 ...
- CSS3—HSL与HSLA属性
㈠HSL(H,S,L) ⑴通过对色相(H).饱和度(S).明度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色 ⑵取值 H:Hue(色调).0(或360)表示红色,120表示绿色,2 ...