大家好,python作为一种简洁、灵活且功能丰富的编程语言,可以与各种api轻松集成,jenkins的api也不例外。借助于python中的python-jenkins
模块,我们可以轻松地编写脚本来连接到jenkins服务器,并执行各种操作,如创建、删除、构建jobs等。这种自动化的方式不仅提高了效率,还使得ci/cd流程更加灵活和可控。
一、安装python-jenkins
可以使用pip命令来安装python-jenkins
模块:
pip install python-jenkins
二、连接到jenkins
使用python-jenkins
模块连接到jenkins服务器:
import jenkins
# jenkins服务器的url
jenkins_url = 'http://your-jenkins-url'
# jenkins的用户名和密码
username = 'your-username'
password = 'your-password'
# 连接到jenkins服务器
server = jenkins.jenkins(jenkins_url, username, password)
三、执行操作
连接到jenkins后,可以执行各种操作,如获取job信息、构建job、获取构建信息等。下面给大家介绍一下常见的操作。
1、获取所有 jobs
可以使用 get_jobs()
方法获取 jenkins 服务器上的所有 jobs。
jobs = server.get_jobs()
for job in jobs:
print(job['name'])
2、获取 job 信息
可以使用 get_job_info(job_name)
方法获取特定 job 的详细信息。
job_name = 'your-job-name'
job_info = server.get_job_info(job_name)
print(job_info)
3、创建 job
job_name = 'new-job'
config_xml = '''
<project>
<description>a new job created via python</description>
<builders>
<hudson.tasks.shell>
<command>echo "hello from python-jenkins"</command>
</hudson.tasks.shell>
</builders>
</project>
'''
server.create_job(job_name, config_xml)
4、删除 job
可以使用 delete_job(job_name)
方法删除特定的 job。
job_name = 'job-to-delete'
server.delete_job(job_name)
5、构建 job
可以使用 build_job(job_name)
方法触发构建特定的 job。
job_name = 'job-to-build'
server.build_job(job_name)
6、获取构建信息
可以使用 get_build_info(job_name, build_number)
方法获取特定 job 的构建信息。
job_name = 'your-job-name'
build_number = 1 # 构建号
build_info = server.get_build_info(job_name, build_number)
print(build_info)
7、获取最后一次构建的结果
可以使用 get_job_info(job_name)
方法获取 job 的详细信息,其中包括最后一次构建的结果。
job_name = 'your-job-name'
job_info = server.get_job_info(job_name)
last_build_result = job_info['lastbuild']['result']
print("最后一次构建结果:", last_build_result)
8、获取构建日志
可以使用 get_build_console_output(job_name, build_number)
方法获取特定构建的控制台输出日志。
job_name = 'your-job-name'
build_number = 1 # 构建号
console_output = server.get_build_console_output(job_name, build_number)
print(console_output)
9、触发参数化构建
如果 jenkins job 是参数化的,可以使用 build_job()
方法的 parameters
参数来触发参数化构建。
job_name = 'your-job-name'
parameters = {'param1': 'value1', 'param2': 'value2'}
server.build_job(job_name, parameters=parameters)
10、获取视图信息
可以使用 get_views()
方法获取 jenkins 上的所有视图信息。
views = server.get_views()
for view in views:
print(view['name'])
11、获取节点信息
可以使用 get_nodes()
方法获取 jenkins 上所有节点的信息。
nodes = server.get_nodes()
for node in nodes:
print(node['name'])
12、获取构建的测试结果
可以使用 get_tests(job_name, build_number)
方法获取特定构建的测试结果。
job_name = 'your-job-name'
build_number = 1 # 构建号
test_results = server.get_tests(job_name, build_number)
print(test_results)
13、获取插件信息
可以使用 get_plugins()
方法获取 jenkins 上已安装的所有插件的信息。
plugins = server.get_plugins()
for plugin in plugins:
print(plugin['shortname'], plugin['version'])
14、设置节点离线/在线状态
可以使用 disable_node(node_name)
和 enable_node(node_name)
方法将节点设置为离线或在线状态。
node_name = 'node-to-disable'
server.disable_node(node_name)
node_name = 'node-to-enable'
server.enable_node(node_name)
15、获取构建的变更集信息
可以使用 get_changeset(job_name, build_number)
方法获取特定构建的变更集信息。
job_name = 'your-job-name'
build_number = 1 # 构建号
changeset = server.get_changeset(job_name, build_number)
print(changeset)
16、获取 jenkins 系统信息
可以使用 get_info()
方法获取 jenkins 系统信息。
info = server.get_info()
print(info)
17、执行 groovy 脚本
可以使用 run_script(script)
方法执行 groovy 脚本。
script = "println('hello from groovy')"
result = server.run_script(script)
print(result)
18、获取当前 jenkins 用户信息
可以使用 get_whoami()
方法获取当前 jenkins 用户的信息。
user_info = server.get_whoami()
print(user_info)
19、获取构建的稳定性
可以使用 get_build_stability(job_name, build_number)
方法获取特定构建的稳定性信息。
job_name = 'your-job-name'
build_number = 1 # 构建号
stability = server.get_build_stability(job_name, build_number)
print(stability)
20、禁用 job
要禁用一个 job,可以使用 disable_job(job_name)
方法。
job_name = 'your-job-name'
server.disable_job(job_name)
21、重新启用 job
要重新启用一个被禁用的 job,可以使用 enable_job(job_name)
方法。
job_name = 'your-job-name'
server.enable_job(job_name)
22、创建视图
要创建视图,可以使用 create_view(view_name, view_config_xml)
方法。
view_name = 'new-view'
view_config_xml = '''
<hudson.model.listview>
<name>my new view</name>
<filterexecutors>false</filterexecutors>
<filterqueue>false</filterqueue>
<properties class="hudson.model.view$propertylist"/>
<jobnames>
<comparator class="hudson.util.caseinsensitivecomparator"/>
<string>your-job-name</string>
</jobnames>
<jobfilters/>
<columns>
<hudson.views.statuscolumn/>
<hudson.views.weathercolumn/>
<hudson.views.jobcolumn/>
<hudson.views.lastsuccesscolumn/>
<hudson.views.lastfailurecolumn/>
<hudson.views.lastdurationcolumn/>
<hudson.views.buildbuttoncolumn/>
</columns>
<recurse>false</recurse>
</hudson.model.listview>
'''
server.create_view(view_name, view_config_xml)
23、删除视图
要删除视图,可以使用 delete_view(view_name)
方法。
view_name = 'view-to-delete'
server.delete_view(view_name)
24、编辑视图
要编辑视图,可以先获取视图的配置信息,然后修改需要的部分,最后使用 server.reconfig_view(view_name, view_config_xml)
方法来重新配置视图。
view_name = 'your-view-name'
view_config_xml = '''
<hudson.model.listview>
<name>modified view</name>
<filterexecutors>false</filterexecutors>
<filterqueue>false</filterqueue>
<properties class="hudson.model.view$propertylist"/>
<jobnames>
<comparator class="hudson.util.caseinsensitivecomparator"/>
<string>your-job-name</string>
</jobnames>
<jobfilters/>
<columns>
<hudson.views.statuscolumn/>
<hudson.views.weathercolumn/>
<hudson.views.jobcolumn/>
<hudson.views.lastsuccesscolumn/>
<hudson.views.lastfailurecolumn/>
<hudson.views.lastdurationcolumn/>
<hudson.views.buildbuttoncolumn/>
</columns>
<recurse>false</recurse>
</hudson.model.listview>
'''
server.reconfig_view(view_name, view_config_xml)
25、编辑 job
要编辑 job,可以先获取 job 的配置信息,然后修改需要的部分,最后使用 server.reconfig_job(job_name, job_config_xml)
方法来重新配置 job。
job_name = 'your-job-name'
job_config_xml = '''
<project>
<description>modified job description</description>
<builders>
<hudson.tasks.shell>
<command>echo "modified build step"</command>
</hudson.tasks.shell>
</builders>
</project>
'''
server.reconfig_job(job_name, job_config_xml)
四、示例
下面是一个完整的示例,展示了如何使用 python-jenkins
模块连接到 jenkins 服务器,并进行一些基本操作,包括创建、构建、编辑和删除 job:
import jenkins
# jenkins 服务器的 url
jenkins_url = 'http://your-jenkins-url'
# jenkins 的用户名和密码
username = 'your-username'
password = 'your-password'
# 使用 jenkins 类来连接到 jenkins 服务器
server = jenkins.jenkins(jenkins_url, username, password)
# 1. 创建一个新的 job
new_job_name = 'new-job'
new_job_config_xml = '''
<project>
<description>a new job created via python</description>
<builders>
<hudson.tasks.shell>
<command>echo "hello from python-jenkins"</command>
</hudson.tasks.shell>
</builders>
</project>
'''
server.create_job(new_job_name, new_job_config_xml)
# 2. 获取所有 jobs
print("all jobs:")
jobs = server.get_jobs()
for job in jobs:
print(job['name'])
# 3. 构建 job
job_to_build = 'new-job'
server.build_job(job_to_build)
# 4. 编辑 job
job_to_edit = 'new-job'
edited_job_config_xml = '''
<project>
<description>modified job description</description>
<builders>
<hudson.tasks.shell>
<command>echo "modified build step"</command>
</hudson.tasks.shell>
</builders>
</project>
'''
server.reconfig_job(job_to_edit, edited_job_config_xml)
# 5. 删除 job
job_to_delete = 'new-job'
server.delete_job(job_to_delete)
print("job operations completed.")
发表评论