python回调函数之获取jenkins构建结果

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

需求背景:

现在用jenkins构建自动化测试(2个job),公司现将自动化纳入到发布系统

要求每次构建成功之后,把测试结果发送给发布系统。

这就需要先获取jenkins构建的结果,如果构建结束,才能发送测试结果,

否则就要等待jenkins构建结束。


更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


理解回调函数:

像这样类似:男女朋友约会结束,男方要求女方到家后发1个信息,告诉他安全到家了。

就是python回调函数的应用场景。

男女朋友约会结束是在主函数mainfunc中,女朋友回家这个动作由callback函数完成。

在mainfunc函数中,男朋友会接收女朋友发送已到家的消息,那怎么接收呢?

就是通过调用callback这个函数来获得女朋友到家的状态,这个过程就称之为回调函数

基本思路:

先用一个demo理清自己的思路,要做哪些事?共分几个步骤?

每个步骤要完成哪些事情?这些思路搞定之后,代码也就完成了。

这里的有一个技巧:先用randomint随机生成一个数字,用来代表jenkins的构建结果状态,而不是每次都真的去请求接口。因为这会增加验证结果的时间成本,分散精力。

最后整个流程顺下来,再把随机数部分替换为真正去请求jenkins接口,这会大大节约调试时间。

version1:

demo 理清思路,用简单的代码描述清楚自己想要实现的效果

def mainfunc(func):
    '''

    :param func: callback func Name
    :return:
    '''
    print('start build job')
    func()
    print('send report to ding wen qi')


def callback():
    '''

    :return: jenkins job build state
    '''
    print('jenkins is done')

mainfunc(callback)

version2:

callback函数,获取job的构建状态。

该函数返回一个状态,true或false。

true表示job已经构建结束,false表示程序仍然在构建中

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def callback():
    '''

    :return: jenkins job build state
    '''
    num = random.randint(1,10)
    #利用randint随机生成一个num 假装enkins是返回的构建结果。偶数认为已经构建结束,奇数认为仍在构建中
    print(num)
    if num % 2 != 0:#奇数
        print('kins is building job')
        return  {'buildState':False}
    else:#偶数
        print('jenkins is done')
        return {'buildState': True}

version3:

mainfunc接收callback返回的状态,

true:做send report操作,false 再次调用func函数确认,直到结果是true

while True:
    flag = func()
    if flag :
        print('step3:send report to ding wen qi')
        break

结果:

1 step1:start build job
2 step2:jenkins is building job
3 step2:jenkins is building job
4 step2:jenkins is done
5 step3:send report to ding wen qi

version4:

加入等待时间,在询问jenkins是否构建结束之前,先等上10秒1钟(正常1个job至少构建1分钟以上,不停询问很浪费资源)

time.sleep(2)

完整的demo代码:

import random
import time

def mainfunc(func):
    '''
    :param func: callback func Name
    :return:
    '''
    print('step1:start build job')

    #根据callback返回的状态,决定是否进行下一步操作
    while True:
        flag = func()
        if flag :
            print('step3:send report')
            break
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def callback():
    '''
    :return: jenkins job build state
    '''
    #jenkins构建job需要至少3分钟,所以每隔1分钟请求一次
    time.sleep(2)
    num = random.randint(1,100)
    #利用randint随机生成一个num 假装enkins是返回的构建结果。偶数认为已经构建结束,奇数认为仍在构建中
    # print(num)
    if num % 2 != 0:#奇数
        print('step2:jenkins is building job')
        return  False
    else:#偶数
        print('step2:jenkins is done')
        return True

mainfunc(callback)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦

希望本篇文章有对你带来帮助 ,有学习到一点知识~

躲起来的星星也在努力发光,你也要努力加油(让我们一起努力叭)。

python回调函数之获取jenkins构建结果_第1张图片

最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀

你可能感兴趣的:(python基础,python,jenkins,开发语言,pycharm)