Author:rab
Python 版本:3.9
Jenkins 版本:2.409
官方文档:https://python-jenkins.readthedocs.io/en/latest/
Python-Jenkins 是一个用于与 Jenkins CI(持续集成)服务器进行交互的 Python 三方包。它提供了一组功能丰富的 API,使开发人员能够通过 Python 脚本与 Jenkins 进行通信和操作。
Python-Jenkins 插件的主要用途包括:
简单理解就是,Python-Jenkins 工具为开发/运维等技术人员提供了一种方便的方式来与 Jenkins CI 服务器进行交互,从而实现自动化构建、部署和管理 Jenkins 作业的目的。
接下来,列举该工具一些常见的使用案例。
1、创建虚拟环境
mkvirtualenv myenv
2、安装 Python-Jenkins 包
pip install python-jenkins
3、编写代码
import jenkins
server = jenkins.Jenkins('http://192.168.56.142:8888', username='admin', password='zhurs@123')
user = server.get_whoami()
version = server.get_version()
print('当前登录用户为:%s \nJenkins版本为:%s' % (user['fullName'], version))
4、执行结果
server.create_job('newjob', jenkins.EMPTY_CONFIG_XML)
# 通过create_job()方法创建newjob工程(且默认配置为空的XML配置)
jobs = server.get_jobs()
# 通过get_jobs()方法获取当前用户所有工程(作业)
我 jenkins 原本就已经创建了一个 test 的工程,那此时我们就可以通过 get_job_config() 方法来获取这个 job 的配置信息。
my_job = server.get_job_config('test')
# 通过get_job_config()方法来获取test这个job的配置信息
server.build_job('newjob')
# 通过build_job()方法来构建newjob这个job
我们也可以在构建时向 job 传递指定的参数:
server.build_job('param-test', {'param1': 'first param value', 'param2': 'second param value'})
# 在job中我们就可以使用param1、param2这两个参数对应的值了
server.disable_job('newjob')
# 通过disable_job()来禁用newjob这个job
server.copy_job('newjob', 'newjob_copy')
# 通过copy_job()方法,将newjob工程复制并命名为newjob_copy
server.enable_job('newjob_copy')
# 通过enable_job()函数来启用newjob_copy这个job
server.reconfig_job('newjob_copy', jenkins.RECONFIG_XML)
# 通过reconfig_job()方法将newjob_copy重置配置
删除就不演示了,你也看不见效果。
server.delete_job('newjob')
server.delete_job('newjob_copy')
# 通过delete_job()方法删除newjob和newjob_copy
以上片段代码整合如下:
import jenkins
server = jenkins.Jenkins('http://192.168.56.142:8888', username='admin', password='zhurs@123')
user = server.get_whoami()
version = server.get_version()
print('当前登录用户为:%s \nJenkins版本为:%s' % (user['fullName'], version))
server.create_job('newjob', jenkins.EMPTY_CONFIG_XML)
jobs = server.get_jobs()
print("当前账户的所有job列表:\n", jobs)
my_job = server.get_job_config('test')
print("test工程的配置信息为:\n", my_job)
server.build_job('newjob')
server.disable_job('newjob')
server.copy_job('newjob', 'newjob_copy')
server.enable_job('newjob_copy')
server.reconfig_job('newjob_copy', jenkins.RECONFIG_XML)
先来看看效果:
last_build_number = server.get_job_info('test')['lastCompletedBuild']['number']
build_info = server.get_build_info('test', last_build_number)
print(build_info)
# 通过build_job()方法来获取test这个job最后一次的构建信息
# 其内容包括构建用户、构建ID、构建URL等
jobs = server.get_jobs(view_name='dev')
print(jobs)
# 通过get_job()方法来获取指定的试图下的所有job信息
先看看我 jenkins 中有哪些视图,及视图下有哪些 job
可见,dev 视图下有一个名为 test 的 job
最后来验证是否正确获取到指定视图下的内容
内容正确获取并打印到标准输出
server.create_view('devops', jenkins.EMPTY_VIEW_CONFIG_XML)
# 通过create_view()方法来创建自定义视图(且为一个空的视图配置)
view_config = server.get_view_config('devops')
print(view_config)
server.delete_view('devops')
# 删除名为devops的视图
plugins = server.get_plugins_info()
print(plugins)
# 通过get_plugins_info()方法来获取当前jenkins安装的所有插件
下图为部分截图
Pipeline 语法/Groovy 语法
。urllib3 包所需 ssl 模块 openssl 版本过低
提示需要 openssl 1.1.1+ 以上,但是当前为 1.0.2,有两种方法:
升级 openssl 版本
pip install openssl@1.1
降低 urllib3 版本(我采用的是这种方法)
pip install urllib3==1.26.6
注意:这个 openssl 不是你的宿主机的 openssl 而是你的 Python 环境中的 openssl。