在研究jenkinsapi的时候,在百度和google查找资料,总是些零零碎碎的介绍,基于这段时间的研究,有点小成就,所以将研究的工作记录下来。
jenkinsapi库的安装
- 下载:在https://pypi.python.org/pypi/jenkinsapi/上下载jenkinsapi-0.2.26.tar.gz;
- 安装:解压jenkinsapi-0.2.26.tar.gz,进入jenkinsapi-0.2.26目录,运行pythonsetup.py install 进行安装,联网情况下,程序会直接下载一些包,并进行安装,运行结束后可以对该库进行操作。
jenkinsapi库封装的类
该库下封装了23个类,主要有jenkins.py、job.py、build.py、view.py、node.py等,其主要作用:
1.jenkins.py
主要通过该接口进入jenkins服务器,对job、node进行操作,有:
get_jobs、create_job、build_job、delete_job、get_node、get_queue、get_plugins、get_master_data等;
2.job.py
针对job的构建进行操作,有:
get_first_buildnumber、get_last_stable_buildnumber、get_last_failed_buildnumber、get_next_build_number、is_queued、is_running、is_enabled、delete_from_queue等;
3.build.py
对构建的job的构建结果进行分析有:
get_number、get_status、get_revision_branch、get_master_job_name、get_master_build_number等;
4.view.py
对view视图进行操作
5.node.py
对node节点进行操作
jenkinsapi库的使用
获得jenkins中job的列表
代码为:
# -*- 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时间不长,研究也比较肤浅,希望能够和大家一起学习,欢迎一起讨论!