使用Python操作Jenkins平台

372 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情

上一篇搭建了一个完整的Jenkins工程,实现在某个网站获取最新的一张图片并向我们发送邮件。

这一篇分享如何用Python的Jenkins库来操作工程。

前提需要给Python安装jenkinsapi库。以下均为python代码。

创建一个带用户的Jenkins实例

jks = Jenkins( 'http://url:8080/' , username= 'username' , password= '11f5355454594bf0fda67dba53ec7700' ,useCrumb=True)

Jenkins实例的创建过程,第一个参数是你的平台链接,不是什么特别的链接,就是日常访问的链接,username是你的用户名,password是密码,useCrumb设为True时密码使用的是生成的token,否则为登录密码。

token的设置位于用户设置中,用户下的API Token。

image.png

增加新token只显示一次,要及时保存下来。

获取工程列表

print(jks.keys())

image.png

将平台上所有的工程以python列表的形式传回来。

查看某个工程的配置信息

config_test1 = jks.get_job( 'test1' ).get_config()
print(config_test1)

这里就选取我们上一篇创建的test1的配置进行查看。

可以看到,这个打印的是一个xml文件的内容。

image.png

修改配置

Jenkins配置本质是xml字符串,理解这一点就可以用这个进行配置的修改。

这里使用xml.dom.minidom中的parseString来解析这个字符串。

解析xml字符串

from xml.dom.minidom import parseString

dt = parseString(config_test1)

collection = dt.documentElement

 取得邮件接收人的节点

recipientList = collection.getElementsByTagName( "recipientList" )[0]
recipientList.firstChild.data = 'somemail@qq.com'

这里可以先打印出来,查到自己邮件接收人是哪个位置。第一行是根据节点规则取得这节点。第二行是将这个节点里的值设置成somemail.qq.com

加载至工程

new_config = dt.toxml()
print(type(new_config))
job_test1 = jks.get_job( 'test1' )
job_test1.update_config(new_config)

先将节点文档转换为xml,再获取工程后更新其配置即可。全程无需生成额外文件。

此时可以前往平台查看是否修改成功。

 

运行工程

jks.build_job('test1')

多执行几次,可以看到刚才修改的邮件中有了很多的邮件。

image.png

获取最后一次的运行状态

status = job_test1.get_last_build().get_status()

 

获取最后一次运行的日志

console_log = job_test1.get_last_build().get_console()

image.png

获取指定编号的构建

job_test1.get_build(26)

 

其他功能就不再列举了,可以通过提示查询出来,也可以查看库的源代码。需要值得理解的是Jenkins本身也是一个树形的结构。从客户端到工程,到工程的每次构建,每次构建里的数据组成了整个系统。

此时你应该学会如何通过Python来操作Jenkins平台了吧