Jenkins除了有GUI界面,还提供了RestAPI的方式来方便用户,使用代码(Python、Java)控制Jenkins的工作流。
【本文要点】
- 使用python-jenkins库和python3.6.3作为基础。
- Jenkins被安装在虚拟机上,开放部分Jenkins的“安全设置”。
- 设置Jenkins中当前登录用户的API Token。
- 在Pycharm中写一些简单的代码来控制远程的Jenkins。
1.Python-Jenkins库
1.1 What is python-jenkins?
Python Jenkins is a python wrapper for the Jenkins REST API which aims to provide a more conventionally pythonic way of controlling a Jenkins server. It provides a higher-level API containing a number of convenience functions.
1.2 Python-Jenkins能做什么?
Python-Jenkins可以做很多事情见图1所示:
1.3 Python-Jenkins的安装
如果你的Python环境中有pip管理工具,请使用pip进行python-jenkins库文件的安装,安装命令如下所示。【PS:建议python版本使用3.x】
#使用pip进行python-jenkins库的安装
$ pip install python-jenkins
2.修改Jenkins的“安全设置”
笔者所用的Jenkins版本为2.89.3,对于Jenkins2.x以上的版本,安全防护更加的严格。因此,我们需要降低一点Jenkins的安全防护级别,将“安全矩阵”替换为“登录用户可以做任何事”。图2和图3为具体更改后的安全配置情况。
修改完“全局安全配置”后,请重启您的Jenkins服务
[PS]重启Jenkins服务可以采用在地址栏输入“http://ip:port/restart”的方式。
3.Jenkins中设置当前登录用户的 API Token
只有已登录的用户才能设置自己相对应的API Token,API token是用户登录操作Jenkins的另外意义上的Password,可以将API Token 等价于Password。
3.1 启用用户所属的API Token
当你成功登录进Jenkins系统,根据图3所示的操作进行Show API Token 的操作,你就会得到当前用户唯一的API Token,API Token的用法见本文第四节(编写python控制jenkins的代码)
3.2 修改用户所属的API Token
如果,你想修改你的API Token,请根据图4所示进行修改操作。
4.编写python控制jenkins的代码
下面是一个获取Jenkins版本号的小Demo:
import jenkins
#远程Jenkins的地址
jenkins_server_url = 'http://192.168.1.13:8080'
#用户名
user_id = 'admin'
#用户的token值(每个user有对应的token----如本文第3.1节所示)
api_token = 'ea8c65123036cf95cd038b1d8e5cc3c9'
#登录密码
#passwd = 'admin'
#server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=passwd)
#使用 API_Token 进行Jenkins登录操作
server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)
#使用get.version()方法获取版本号
version = server.get_version()
print(version)
#server.build_job('oschina_selenium_docker')
图5为Jenkins GUI上的版本号信息:
图6为Python代码执行后获取Jenkins版本号的结果:
笔者遇到的坑点与填坑
【坑点1】一定要修改Jenkins的“全局安全设置”,不然代码运行时就会报错“jenkins.BadHTTPException: Error communicating with server[http://192.168.1.13:8080/]”。
【填坑1】要想解决坑点1,请具体本文【图2图3】进行设置Jenkins的【全局安全配置】即可。
更多Python代码方式操作Jenkins的事例代码请访问Pthon-Jenkins官方。
本文END,请换一种方式体验下Jenkins的不同玩法!