需求:

我现在需要完成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. 【转】关于IAP与APP互相跳转的实现

    关于IAP与APP互相跳转的实现 首先,在您动手做这个实验之前,先要弄清除咱俩的软硬件有什么不同: 1. 我的CPU是STM32F103ZET6,里面有512K的FLASH,您的CPU如果是其它类型, ...

  2. 《Linux就该这么学》day1-day2

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  3. centos7中的网卡名称相关知识

    转载自https://www.cnblogs.com/zyd112/p/8143464.html 一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在 ...

  4. GitHub的本地与远程

    首先要有一个github账户(这不是废话吗) 在linux中先安装git arch linux : pacman -S git 在终端里输入 ssh-keygen ##一直默认就可以了 将公钥加入到G ...

  5. 版本控制工具 svn 二

    一.图标 忽略图标 实例 二.版本 回滚 tortoisesvn ——> 版本更新——>一般情况下使用 “显示日子” 回滚 三.版本冲突 版本冲突产生原因 多人先后提交文件,每个人提交的文 ...

  6. elk快速入门-Logstash

    Logstash1.功能:数据输入,数据筛选,数据输出2.特性:数据来源中立性,支持众多数据源:如文件log file,指标,网站服务日志,关系型数据库,redis,mq等产生的数据3.beats:分 ...

  7. 合并K个sorted list

    合并k个已经排好序的数列是面试中也比较容易被问到的一个算法,有很多种解决,其中第一时间比较容易想到的解法如下: 对于这三组从小到大的数列: 如此循环,最终就将三个已经排序的数列的数字按从小到大的顺序排 ...

  8. 【模板】多标记 LCT

    代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int mod = 51061 ...

  9. 解决Android无法正常https://dl.google.com/dl/android/maven2/com/的办法

    最近需要进行移动开发,在安装Android Studio时,遇到了很纠结的问题,安装一直很不顺利.经过2天的百度搜索终于是找到解决的办法. 问题花了2天的时间才从茫茫大海中找到确切的答案.所以必须开个 ...

  10. 微信小程序aes前后端加密解密交互

    aes前后端加密解密交互 小程序端 1. 首先引入aes.js /** * [description] CryptoJS v3.1.2 * [description] zhuangzhudada so ...