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的列表
代码为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# -*- 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的构建情况
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# -*- 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)
|