背景:在通过python的API调用Jenkins,启动Jenkins的job任务时,是需要知道Jenkins的编译状态,获取编译状态为

status=server.get_build_info(jobname, get_number2)['result'] #jobname,为任务的job名称,get_number2为编译版本号

 目前是以前项目中截取的代码,我连接Jenkins是用了两种方式,因为有一种方式不能进行编译job,另外一种获取其他数据有问题,也是一直存在的bug

def connet_jenkinsjob(self):  #连接Jenkins
server = Jenkins(jenkins_url, username=jenkins_user, password=jenkins_password,
requester=CrumbRequester(username=jenkins_user, password=jenkins_password,
baseurl=jenkins_url))
return server def stats_jenkinsjob(self):#连接Jenkins
server = jenkins.Jenkins(jenkins_url, username=jenkins_user, password=jenkins_password)
return server
def bulids_job(self):
global get_number2
server = self.stats_jenkinsjob()
server_build = self.connet_jenkinsjob()
    server_build.build_job(jobname, params=param_dict) # 待观察这个问题有解决方案不 进行项目的编译
sql = "update auto_caseList SET runStart='运行中' WHERE id= '" + key + "'""
try:
get_number2 = server.get_job_info(jobname)['nextBuildNumber'] #获取下一个编译版本号
get_number = server.get_job_info(jobname)['lastBuild']['number'] #获取编译的版本号
except Exception, e:
print "首次创建所以获取不到编译的版本号", e
self.mysql_uptate_operation(sql)
else:
get_buildstats = server.get_build_info(jobname, get_number)['building']#获取编译的状态,是否在编译
if get_buildstats == False:
print "编译中,数据状态进行更新"
else:
print "没有编译"
finally:
sleep(23) #一定要加,在启动编译后,不能马上获取编译状态,不然一直是编译成功,如果Jenkins编译失败是会在20-23S之间
status=server.get_build_info(jobname, get_number2)['result']#获取编译的状态,编译是否成功,如果不成功,就会返回FAILURE,编译成功是返回NONE
if status == "FAILURE":
print "构建出错: %s | 构建项目编号:%s" % (jobname, get_number2)
sql = "update auto_caseList SET runStart='构建出错' WHERE id= '" + key + "'""
self.mysql_uptate_operation(sql)
else:
print "构建成功:%s | 构建项目编号:%s" % (jobname, get_number2)

  

我这里的逻辑是获取到编译状态后,在等23s后查看编译是否成功,如果编译成功,编译完成会是None,而不通过的就是FAILURE

Jenkins获取编译状态的更多相关文章

  1. jenkins 构建 job 并获取其状态的实现

    目录 BACKGROUND INVESTIGATION I 1. 连续触发的相同 job 构建不会重复入队 2. 连续触发的不同 job 构建会各自入队 3. 参数变动的相同 job 构建将分别入队 ...

  2. [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  3. [React Native]获取网络状态

    使用React Native,可以使用NetInfo API获取手机当前的各个网络状态. componentWillMount() { NetInfo.fetch().done((status)=&g ...

  4. 系统编程-网络-tcp客户端服务器编程模型(续)、连接断开、获取连接状态场景

    相关博文: 系统编程-网络-tcp客户端服务器编程模型.socket.htons.inet_ntop等各API详解.使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性 ...

  5. iOS 获取网络状态

    在iOS开发者,获取网络状态比较常用 -(NSString *)getNetWorkStates{ UIApplication *app = [UIApplication sharedApplicat ...

  6. C# 获取时间差状态

    /// <summary> /// 根据时间获取时间状态 /// </summary> /// <param name="dt"></pa ...

  7. Best Practices for Performance_4.Optimizing Battery Life 获取充电状态、电池信息,"sticky"类型的广播

    http://developer.android.com/training/monitoring-device-state/index.htmlhttp://developer.android.com ...

  8. Android 通过广播获取网络状态

    Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验.          本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请 ...

  9. 如何在使用 RemoteWebDriver 打开网页的同时获取 Http 状态码

    最近一直在用Selenium这个开源项目写一些web 自动化的小玩意.本来一直运行的挺好,直到有一天突然发现资源抓取失败了,翻看日志才发现,原来本该正常打开的页面返回了504错误所以自然失败了.如何避 ...

随机推荐

  1. 深度为君剖析CTO、技术总监、首席架构师的区别

      CTO.技术总监.首席架构师的区别 经常有创业公司老板来拜访我,常常会拜托给我一句话:帮我找一个CTO. 我解释的多了,所以想把这个写下来,看看你到底需要的应该是啥. 一.高级程序员 如果你是一个 ...

  2. this,小心!

    this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在JS中,由于 javascript的动态性(解释执行,当然也有简单的预编译过程),this ...

  3. 判断php变量是否定义,是否为空,是否为真的一览表

    分类: 使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; ...

  4. 【转】Java策略消除if else

    策略(Strategy)模式:又名Policy,它的用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换.策略模式可以独立于使用他们的客户端而变化.GOF策略模式静态结构类图如下: 通过上 ...

  5. java核心技术-IO

    一 .IO 1.1 流的简单介绍和分类 Java流操作的相关的类和接口: Java流类图结构: 四个抽象基类分别为:InputStream .OutputStream .Reader .Writer: ...

  6. UVA1584(环状序列)

    对于序列的最小值,可以定义一个比较的方法,然后用一般找最小值的方法遍历一遍即可 #include <iostream> #include <string> #include & ...

  7. python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法

    一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...

  8. html和css入门 (一)

    HTML简介 什么是HTML HTML 的全称为 超文本标记语言(Hyper Text Markup Language),这种语言给我们提供一种建立结构性文档的方法.通过表示结构性的标签语法,我们可以 ...

  9. Zookeeper + Guava loading cache 实现分布式缓存

    1. 概述 项目中,创建的活动内容存入redis,然后需要用到活动内容的地方,从redis去取,然后参与计算. 活动数据的一个特点是更新不频繁.数据量不大.因为项目部署一般是多机器.多实例,除了red ...

  10. JS计算十万块钱 分31期 利息万分之五 每个月的还款数

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