需求:

我现在需要完成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的更多相关文章

  1. Jenkins 六: 构建中执行shell或者 windows的批处理程序

    Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...

  2. python raw String 获取字符串变量中的反斜杠

    常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...

  3. Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码

    通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 ...

  4. python xlrd 模块(获取Excel表中数据)

    python xlrd 模块(获取Excel表中数据) 一.安装xlrd模块   到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了pyt ...

  5. 用Python批量裁取图,来获取文件夹中所有图片名

    批量截图(截取正方形图,哪个边短就用哪个边作为标准来截取) 功能是裁取图片中红色框的部分. 代码为: import sys from tkinter.tix import Tk from PIL im ...

  6. Python之uiautomation模块-获取CMD窗口中所打印的文字信息

    当我们想以自动化的方式操作软件,以提高办公或测试效率时,有许多成熟的工具,比如针对Web端应用的Selenium.针对移动端应用的Appium.那么,PC端(Windows)桌面应用,又改如何处理呢? ...

  7. python实现获取文件夹中的最新文件

    实现代码如下: #查找某目录中的最新文件import osclass FindNewFile: def find_NewFile(self,path): #获取文件夹中的所有文件 lists = os ...

  8. Python之获取文件夹中文件列表以及glob与fnmatch模块的使用

    获取文件夹中的文件列表 print(os.listdir("../secondPackage")) # ['__init__.py', 'secondCookBook.py', ' ...

  9. 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0

    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...

随机推荐

  1. bom and dom

    bom:Broswer Object Model: 浏览器对象模型- navigator: 获取客户机的信息(浏览器的信息)document.write(navigator.appName);- sc ...

  2. python文件操作:文件处理案例

    储存一个文件,文件上有多个用户名,密码,做一个认证的流程程序,首先创建一个文件,文件上输入多个用户名,及对应的密码,然后让客户输入用户名和密码,进行用户名和密码核对,如果输入正确,则的认证成功,bre ...

  3. 美登杯”上海市高校大学生程序设计邀请赛 Problem E 、 小 花梨 的数组 (线段树)

    Problem E E . 小 花梨 的数组 时间限制:1000ms 空间限制:512MB Description 小花梨得到了一个长度为

  4. linux crontab 定时任务执行

    cron机制        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制 crontab参数        -u:这个参数可以让我们去编辑其他 ...

  5. Python Module模块

    模块 https://docs.python.org/zh-cn/3/tutorial/modules.html 模块的概念被高级语言广泛使用. Python的定义 一个包括Python定义和语句的文 ...

  6. 清北学堂dp图论营游记day6

    xysq主讲: 求点双和边双代码: 对所有点进行染色,如果存在一种方案使得相邻的点不同色,那么他就是个二分图. 二分图两种求法,1,dfs求增广路. 2,网络流:最大流=最小割 差分约束: 下午又要考 ...

  7. 第二章 Vue快速入门--14 使用v-model实现计算器的案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. 【ORACLE语句备份】数据库表同步 ——定时任务管理器(EXPDP导出,IMPDP导入)

    1.C:\Users\Administrator>sqlplus sys/xxx@xxx as sysdba; 2.SQL> create directory dbbak4 as 'e:\ ...

  9. redis实现排行榜功能

    目录 加入排行榜 操作排行榜 redis的zset可以很方便地用来实现排行榜功能,下面简单介绍python如何使用redis实现排行榜功能 加入排行榜 获取redis实例 import redis m ...

  10. js中声明函数的区别

    在JS中有两种定义函数的方式, 1是var aaa=function(){...} 2是function aaa(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用 ...