jenkins jenkinsapi库 的使用

    在研究jenkinsapi的时候,在百度和google查找资料,总是些零零碎碎的介绍,基于这段时间的研究,有点小成就,所以将研究的工作记录下来。

jenkinsapi库的安装

  1. 下载:在https://pypi.python.org/pypi/jenkinsapi/上下载jenkinsapi-0.2.26.tar.gz

  2. 安装:解压jenkinsapi-0.2.26.tar.gz,进入jenkinsapi-0.2.26目录,运行pythonsetup.py install 进行安装,联网情况下,程序会直接下载一些包,并进行安装,运行结束后可以对该库进行操作。


jenkinsapi库封装的类

该库下封装了23个类,主要有jenkins.pyjob.pybuild.pyview.pynode.py等,其主要作用:

1.jenkins.py

   主要通过该接口进入jenkins服务器,对jobnode进行操作,有:

get_jobscreate_jobbuild_jobdelete_jobget_nodeget_queueget_pluginsget_master_data等;

2.job.py

   针对job的构建进行操作,有:

get_first_buildnumberget_last_stable_buildnumberget_last_failed_buildnumberget_next_build_numberis_queuedis_runningis_enableddelete_from_queue等;

3.build.py

   对构建的job的构建结果进行分析有:

get_numberget_statusget_revision_branchget_master_job_nameget_master_build_number等;

4.view.py

view视图进行操作

5.node.py

node节点进行操作


jenkinsapi库的使用

获得jenkinsjob的列表

代码为:

# -*- coding: gb2312 -*-
"""
输入:jenkins服务器的地址,用户名和密码
输出:已定义的job的列表
"""
import datetime, time
from jenkinsapi.jenkins import *
from jenkinsapi.job import *
from jenkinsapi.build import Build
def Url_Get_Job_List(url='http://localhost:8080', username='jenkins', password='jenkins'):
    jenkins = Jenkins(url, username, password)
    count = 0
    for job_name in jenkins.keys():
        my_job = jenkins.get_job(job_name)
        count = count + 1
        print "Job" + str(count) + " : "+job_name
if __name__ == "__main__":
    Url_Get_Job_List()


运行后输出:

Job1 : create

Job2 : JenkinsTest

Job3 : Test_1



根据给定job名获得job的构建情况

代码:

# -*- coding: cp936 -*-
"""
输入:jenkins job名称和日期(年、年-月、年-月-日)
输出:job的名称、日期、执行次数、成功次数、失败次数、未执行次数、不稳定次数
"""
import datetime, time
from jenkinsapi.jenkins import *
from jenkinsapi.job import *
from jenkinsapi.build import Build
def Get_Date_List(Job_Name):
    my_job = jenkins.get_job(Job_Name)
    first_build = my_job.get_first_buildnumber()      #获得jenkins列表中的第一个构建数目,不一定是从1开始的
    last_build = my_job.get_last_buildnumber()      #获得最近一次构建的数目
        
    for count in xrange(first_build, last_build+1):    #依次获得每一个job号
        count_build = my_job.get_build(count)
        start_time =  count_build.get_timestamp()      #获得构建时间,时区好像不大对
        
        adjust_time = start_time + datetime.timedelta(hours=8)   #所以在这里加了8小时,变成北京时间了
        Build_Time = adjust_time.strftime("%Y-%m-%d")     #输出时间的格式
        Status =count_build.get_status()                 #返回这次构建的状态,成功或失败
        
        print my_job, count, Build_Time, Status
                              
    
if __name__ == "__main__":
    jenkins = Jenkins('http://localhost:8080', 'jenkins', 'jenkins')
    Job_Name = 'create' 
    Get_Date_List(Job_Name)



运行结果如下:

create 1 2015-03-24 FAILURE

create 2 2015-03-24 FAILURE

create 3 2015-03-24 SUCCESS

create 4 2015-03-25 SUCCESS

create 5 2015-03-30 FAILURE


通过该模块,运行脚本能够得到jenkins每天的构建的详细信息,方便每天的统计。

本人接触python时间不长,研究也比较肤浅,希望能够和大家一起学习,欢迎一起讨论

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章