一、背景

公司项目容器化,需要svn提交的时候触发jenkins job去打包编译,一般是使用shell脚本调用curl命令去发送post请求触发job的构建,这种方式比较繁琐,很容易出现因格式不正确导致触发任务失败,而且这种方式不能帮助我们获取更多的关于job的信息以便于我们后续对job的状态进行跟踪。python-jenkins它几乎涵盖了大部分Jenkins的操作,大大方便了我们在后台进行对Jenkins的一些列操作。

Python-Jenkins官网:https://pypi.python.org/pypi/python-jenkins/

Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html

二、操作步骤

2.1 安装Python-jenkins

1
[root@node1 ~]# pip3  install python-jenkins
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import jenkins #导入模块
jenkins_url = 'http://172.19.66.45:8080/' #jenkins 的url地址
user = 'admin' #jenkins 的user 也可以是userid
password = '123456' #user 的密码 也可以是token




def main():
server = jenkins.Jenkins(jenkins_url, user, password) #实例化Jenkins对象,连接远程的jenkins server
server.build_job('Auto_deploy', {'Project_Name': 'test'}) #参数化构建 参数为字典形式
server.build_job('Auto_deploy') #不带参数化构建


if __name__ == '__main__':
main()

job需要远程参数构建

运行代码,发现job已经被触发,开始构建

2.2 其他用法

1
2
3
4
5
6
7
8
获取job名为job_name的job的相关信息
server.get_job_info(job_name)
获取job名为job_name的job的最后次构建号
server.get_job_info(job_name)['lastBuild']['number']
获取job名为job_name的job的某次构建的执行结果状态
server.get_build_info(job_name,build_number)['result']
判断job名为job_name的job的某次构建是否还在构建中
server.get_build_info(job_name,build_number)['building']

更多其他api可以参考 更多其他的API可以参考Python-Jenkins API: http://python-jenkins.readthedocs.io/en/latest/api.html