重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编这次要给大家分享的是基于Python的Jenkins怎么二次开发,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
创新互联成立于2013年,先为建宁等服务建站,建宁等地企业,进行企业商务咨询服务。为建宁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。背景
最近我们在整一个云执行的平台,底层用的是Jenkins来做执行引擎,方便的把我们的脚本做一个统一的调度。
Jenkins确实是一个非常方便的框架,它提供了一整套的RESTful的API,可以非常方便的做二次开发,而且提供了一个python的库,操作起来就更加方便了。
常用的Jenkins概念
我们在使用Jenkins的时候,一般看到的都是Jenkins的View。
也就是说我们看到的基本上都是一些视图。
每一个构建的内容,无论是执行用例,跑脚本,还是打包编译发布,都是一个job。
每一个job都有一个对应的name,如果这个job被放在某个文件夹了,那么name就是文件夹名+job名。在查看job信息的时候,会返回一个full_name字段,指的就是这个了。
PythonSDK
pip install python-jenkins执行这条命令就可以安装SDK了。
官网:https://pypi.org/project/python-jenkins/
说明文档:http://python-jenkins.readthedocs.io/en/latest/
说明文档都是英文的,如果有兴趣,看这块当然最好,不过这个SDK实际上非常非常的简单,如果直接去看源代码,也是没问题的,我在开发的过程中,基本上都是去看源码来写的,SDK里面函数命名比较直白,不用深刻理解也能够正常的去使用。
这里列一些比较常用的方法,也是我这次开发的时候用到的一些,我按照我自己写的过程中,一步一步的写出来。
开发过程
job信息查询
在Jenkins中,每一个构建都是一个job,所以,我们做开发的时候,要在页面上展示历史的构建信息,因此,要能够拿到历史执行job的信息。因此我们要使用get_job_info这个方法。
def get_job_info(self, name, depth=0, fetch_all_builds=False): '''Get job information dictionary. :param name: Job name, ``str`` :param depth: JSON depth, ``int`` :param fetch_all_builds: If true, all builds will be retrieved from Jenkins. Otherwise, Jenkins will only return the most recent 100 builds. This comes at the expense of an additional API call which may return significant amounts of data. ``bool`` :returns: dictionary of job information '''