from jenkinsapi.jenkins import Jenkins
j = Jenkins('http://XX.XX.xx.xx:9000/jenkins/')
jobName = j.keys()[1]
j_config = j[jobName].get_config()
j_views = j.views.keys()
# print(j.views.iteritems())
# print(j.keys())
# print(j.items()[0][1])
v_k = {i[0]: list(i[1].keys()) for i in j.views.iteritems()}
# 不等待结果构建
# r = j.build_job('yihao01-ecommunity-web')
# job = j['yihao01-session']
#等待发布结果构建 返回编号
# qi = job.invoke()
# if qi.queue_id or qi.is_running():
# qi.block_until_complete()
# build = qi.get_description
#
# job = j.get_job('yihao01-ecommunity-web')
# print(job.get_last_build())
#根据job, id 获取返回结果success ,fail
my_job = j.get_job('yihao01-populationmobility-manager')
count_build = my_job.get_build(780)
r = count_build.get_status()
# 获取console详细输出
std_console = count_build.get_console()
print(std_console)
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)