使用Python操作Jenkins

        大家好,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.")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652815.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—EVA存储异常断电重启后虚拟机无法启动如何恢复数据?

服务器存储数据恢复环境&#xff1a; 某品牌EVA8400&#xff0c;服务器上安装VMware ESXi虚拟化平台&#xff0c;虚拟机的虚拟磁盘包括数据盘&#xff08;精简模式&#xff09;快照数据盘&#xff0c;部分虚拟机中运行oracle数据库和mysql数据库。 服务器存储故障&检测&…

Python bqplot:轻松打造炫酷交互式数据可视化

更多Python学习内容&#xff1a;ipengtao.com bqplot是一个用于Jupyter Notebook的交互式数据可视化库&#xff0c;由Jupyter团队开发。它基于HTML5 Canvas和d3.js&#xff0c;并使用ipywidgets进行交互&#xff0c;允许用户通过Python代码创建复杂的交互式图表。bqplot的设计目…

【前端】XML和HTML的区别详解

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

重生之 SpringBoot3 入门保姆级学习(07、整合 Redis 案例)

重生之 SpringBoot3 入门保姆级学习&#xff08;07、整合 Redis 案例&#xff09; 导入 Maven 依赖并刷新 Maven <dependencies><!--springboot3 Web 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring…

中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!

2024年5月14日&#xff0c;为进一步深化合作&#xff0c;促进业务共同发展&#xff0c;实现双方优势互补。中国移动云能力中心高级专家、郑州移动总经理助理邵根波、管城分公司政企部经理张文孟、航海东路分局张旭红莅临中创算力。中创董事长许伟威、副总经理杨光、技术总监刘朝…

视频营销的智能剪辑:Kompas.ai如何塑造影响力视频内容

引言&#xff1a; 在当今数字化的营销领域&#xff0c;视频内容已经成为品牌吸引用户注意力、建立品牌形象和提升用户参与度的重要方式。然而&#xff0c;要想制作出具有影响力的视频内容&#xff0c;并不是一件容易的事情。这就需要借助先进的技术和工具&#xff0c;如人工智能…

009、字符串_应用场景

缓存功能 Redis作为缓存层&#xff0c;MySQL作 为存储层&#xff0c;绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高 并发的特性&#xff0c;所以缓存通常能起到加速读写和降低后端压力的作用。 计数 许多应用都会使用Redis作为计数的基础工具&#xff0c;它可…

AI 绘画工具 Stable Diffusion 本地安装使用

最近要用到 AI 绘画&#xff0c;所以研究了下目前市面上的 AI 绘画工具&#xff0c;真可谓是琳琅满目&#xff0c;但主流的还是 Stable diffusion 和 Midjourney 两大阵营。 Midjourney 不多说&#xff0c;开箱即用&#xff0c;对新手非常友好&#xff0c;但不免费&#xff0c…

操作系统实验--终极逃课方法

找到图片里的这个路径下的文件 &#xff0c;结合当前题目名称&#xff0c;把文件内容全部删除&#xff0c;改为print print的内容为下图左下角的预期输出的内容

汇凯金业:如何识别黄金价格图表中的关键支撑和阻力位

识别黄金价格图表中的关键支撑和阻力位是黄金交易的一个基本而关键的技能。以下是一些方法来帮助投资者发现这些重要的价格水平&#xff1a; 1. 历史价格水平 观察图表&#xff0c;找出黄金价格在过去曾多次反弹或回落的价格点。这些水平在未来的交易中可能再次成为关键的支撑…

Oracle递归查询笔记

目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询指定节点的递归路径 六、递归子类 七、递归父类 一、创建表结构和插入数据 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…

RunnerGo V4.6.0 多项新增功能,快看看有没有你想要的!

RunnerGo V4.6.0版本上线&#xff0c;不仅对现有功能进行了深度优化和改进&#xff0c;还带来了诸多新功能。 UI 插件&#xff1a;浮窗升级&#xff0c;优化浏览体验 此次更新中&#xff0c;UI插件全新升级至V2.1版本。新版取消了页面内右下角按钮的设计&#xff0c;在浏览器右…

RPC 框架

RPC 全称 Remote Procedure Call——远程过程调用。 RPC技术简单说就是为了解决远程调用服务的一种技术&#xff0c;使得调用者像调用本地服务一样方便透明。RPC是一种通过网络从远程计算机程序上请求服务&#xff0c;不需要了解底层网络技术的协议。 集群和分布式 集群&…

疑惑点:动作监听时this的含义:可以理解为接口的多态

全部代码&#xff1a; package test;import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random;public class test3 extends JFrame implements ActionListener {JButton jb1 new JButton("你点我啊&am…

谢宁DOE培训适合哪些人?

近年来&#xff0c;谢宁DOE培训以其专业、系统的课程内容&#xff0c;受到了众多学习者的青睐。那么&#xff0c;这个培训究竟适合哪些人呢&#xff1f;深圳天行健企业管理咨询公司解析如下&#xff1a; 首先&#xff0c;谢宁DOE培训适合质量管理部门的专业人员。质量总监、质量…

Softing线上研讨会 | 使用Softing smartLink SW-HT将AB PLC下的HART设备连接到艾默生AMS设备管理器

| (免费) 线上研讨会时间&#xff1a;2024年6月25日 14:00~14:45 / 22:30~23:15 艾默生AMS设备管理器凭借其全面功能、优秀诊断能力、兼容性以及远程监控和管理功能&#xff0c;在过程工业中被证明是一款先进的工厂资产管理工具&#xff0c;可用于设备配置、诊断和监控、仪表校…

【Pandas】深入解析`pd.read_pickle()`函数

【Pandas】深入解析pd.read_pickle()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&…

TCP:传输控制协议

文章目录 TCP的服务TCP首部TCP连接的建立与终止建立连接协议连接终止协议TCP状态迁移图2MSL等待状态FIN_WAIT_2状态 流量控制快的发送方和慢的接收方滑动窗口 拥塞控制慢开始和拥塞避免快重传和快恢复 TCP的服务 应用数据被分割成TCP认为最适合发送的数据块当TCP发送一个段后&…

交流负载箱:电力系统的稳定利器

交流负载箱是电力系统中的一种重要设备&#xff0c;主要用于模拟电网中的负载情况&#xff0c;以便对电力系统进行各种性能测试和分析。它是电力系统的稳定利器&#xff0c;对于保障电力系统的稳定运行起着至关重要的作用。 交流负载箱可以模拟电网中的负载情况&#xff0c;为电…

西安航空学院电子工程学院领导莅临泰迪智能科技参观交流

5月26日&#xff0c;西安航空学院电子工程学院院长杨亚萍、专业教师刘坤莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技董事长张良均、副总经理施兴、产品中心负责周东平、校企合作经理吴桂锋与泰迪智能科技韩伟进行热情了接待。双方就专业建设、协同…