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 Python-Jenkins能做什么?
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为具体更改后的安全配置情况。
图2 具体更改后的安全配置情况--上半部分
图3 具体更改后的安全配置情况--下半部分
修改完“全局安全配置”后,请重启您的Jenkins服务
[PS]重启Jenkins服务可以采用在地址栏输入
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 启用用户所属的API Token
3.2 修改用户所属的API Token
如果,你想修改你的API Token,请根据图4所示进行修改操作。
图4 修改用户所属的API Token
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上的版本号信息:
图5 Jenkins GUI上的版本号信息
图6为Python代码执行后获取Jenkins版本号的结果:
图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的不同玩法!