安装第三方依赖:six,requests,python_jenkins,pbr
下载地址:https://pypi.tuna.tsinghua.edu.cn/simple

jenkinsapi基本语法:

#实例化jenkins对象,连接远程的jenkins master server

   server=jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)

   #构建job名为job_name的job(不带构建参数)

   server.build_job(job_name)

   #String参数化构建job名为job_name的job, 参数param_dict为字典形式,如:param_dict= {"param1":“value1”, “param2”:“value2”} 

   server.build_job(job_name, parameters=param_dict)

   #获取job名为job_name的job的相关信息

   server.get_job_info(job_name)

   #获取job名为job_name的job的最后次构建号

   server.get_job_info(job_name)['lastBuild']['number']

     #获取job名为job_name的job的某次构建的执行结果状态

   server.get_build_info(job_name,build_number)['result']     

     #判断job名为job_name的job的某次构建是否还在构建中

   server.get_build_info(job_name,build_number)['building']

完整代码
#!/usr/bin/python3
#-*-coding: UTF-8 -*-

import xml.etree.ElementTree as ET
import jenkins
import time
import sys
from threading import Thread

def init_jenkins():
    '''
    初始化jenkins连接对象
    :return:jenkins对象
    '''
    server =jenkins.Jenkins('http://xxx/',username='xxx',password='xxx')
    return server

def get_param(buildname):
    '''
    获取jenkins的参数
    :param buildname:
    :return:
    '''
    # 获取job名为job_name的job的相关信息
    job_info=j_server.get_job_config(buildname)
    #截取参数化部分
    job_info = '<properties>' + job_info.split('</properties>')[0].split('<properties>')[1] + '</properties>'
    tree = ET.fromstring(job_info)
    para_d = {}
    paramobj = tree.find('hudson.model.ParametersDefinitionProperty').find('parameterDefinitions')
    for child in paramobj.findall('hudson.model.StringParameterDefinition'):
        para_d[child.find('name').text] = child.find('defaultValue').text
    for child in paramobj.findall('hudson.model.TextParameterDefinition'):
        para_d[child.find('name').text] = child.find('defaultValue').text
    return para_d


def get_last_version(build_name):
    '''

    :return:最后构建版本号
    '''
    #获取最后一次构建版本号
    return j_server.get_job_info(build_name)['lastBuild']['number']


def is_building(j_server,job_name,last_version):
    '''
    获取执行状态
    :param j_server:
    :param job_name:
    :param last_version:
    :return:
    '''
    return j_server.get_build_info(job_name, int(last_version) + 1)['building']

def is_pedding(j_server,job_name):
    queue_info = j_server.get_queue_info()
    if queue_info:
        for queue_job_info in queue_info:
            if queue_job_info['task']['name']==job_name:
                print(job_name,'在jenkins等待队列中,休眠30秒。')
                return True
        else:
            return False
    else:
        return False
def get_build_stat(j_server,job_name,last_version):
    '''
    获取构建结果
    :param j_server:
    :param job_name:
    :param last_version:
    :return:
    '''
    while True:
        time.sleep(30)
        if is_pedding(j_server,job_name):
            continue
        if  is_building(j_server,job_name,last_version):
                print(job_name,'构建中,休眠30秒。')
        else:
            build_result=j_server.get_build_info(job_name, int(last_version) + 1)['result']
            if build_result == 'FAILURE':
                print(job_name, '版本:', last_version + 1, '构建失败,详细日志登陆jenkins查看!')
            elif build_result=='SUCCESS':
                print('构建结果:', build_result)
            else:
                print('构建结果未知错误,请登陆jenkins页面查看!')
            break

    return j_server.get_build_info(job_name, int(last_version) + 1)['result']

    # return  j_server.get_build_info(job_name,int(last_version)+1)['result']
def do_build(j_server,job_name,jenkins_param_dict):
    '''
    执行构建函数
    :param j_server:
    :param job_name:
    :param jenkins_param_dict:
    :return:
    '''
    j_server.build_job(job_name, parameters=jenkins_param_dict,token=None)


def work(j_server,job_name,jenkins_param_dict,last_version):
    #执行构建
    print(job_name,'开始构建。。。')
    #构建jenkins任务
    do_build(j_server,job_name,jenkins_param_dict)
    #判断是否执行完
    get_build_stat(j_server, job_name, last_version)
    # if build_result=='FAILURE':
    #     print(job_name,'版本:',last_version+1,'构建失败,详细日志登陆jenkins查看!')
    # else:
    #     print('构建结果:',build_result)


if __name__ == '__main__':
    active_list = ['bianyi', 'push']
    #获取jenkins任务清单
    job_name_list = []

    #用开发任务测试用
    if sys.argv[1]=='dev':
        for i in sys.argv[2:]:
            job_name = 'build-' + i + '-dev-manu'
            job_name_list.append(job_name)
        # job_name_list=['build-broad-dev-manu','build-cust-dev-manu']
        for job_name in job_name_list:
            j_server = init_jenkins()
            last_version = get_last_version(job_name)
            # 获取jenkins参数
            jenkins_param_dict = get_param(job_name)
            p1 = Thread(target=work, args=(j_server, job_name, jenkins_param_dict, last_version,))
            p1.start()  # 开启进程
    else:
        if sys.argv[-1:][0] not in active_list:
            print('参数输入异常')
            exit(0)
        if len(sys.argv) > 6:
            print('编译队列要少于5,请分批执行!')
            exit(0)

        f = open(r'moudle_list.txt', 'r')
        dict_ = eval(f.read())
        for i in sys.argv[1:-1]:
            if i not in dict_:
                print('code输入有误请重启输入!')
                exit(0)

        j_server=init_jenkins()
        if sys.argv[-1:][0] == 'bianyi':
            for job_code in sys.argv[1:-1]:
                job_name=dict_[job_code][0]
                # 获取最后一次编译号
                last_version = get_last_version(job_name)
                # 获取jenkins参数
                jenkins_param_dict = get_param(job_name)
                p1=Thread(target=work,args=(j_server,job_name,jenkins_param_dict,last_version,))
                p1.start()#开启进程
        else:
            for job_code in sys.argv[1:-1]:
                #获取push对应的准发布任务
                job_name = dict_[job_code][0]
                #获取push的任务名
                job_push_name=dict_[job_code][1]
                last_version = get_last_version(job_name)
                last_push_version=get_last_version(job_push_name)
                # 获取jenkins参数
                jenkins_param_dict = get_param(job_push_name)
                print(job_name,'最后一次构建版本号为:',dict_[job_code][2]+str(last_version))
                jenkins_param_dict["TAG_VERSION"]=dict_[job_code][2]+str(last_version)
                print(jenkins_param_dict)
                p1=Thread(target=work,args=(j_server,job_push_name,jenkins_param_dict,last_push_version,))
                p1.start()#开启进程