在研究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时间不长,研究也比较肤浅,希望能够和大家一起学习,欢迎一起讨论!
转载于:https://blog.51cto.com/7140238/1627053