使用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.")

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的位段

位段是通过结构体实现的&#xff0c;可以在一定程度上减小空间浪费&#xff0c;位段的声明和结构体类似&#xff0c;有以下几个不同&#xff1a; ①位段的成员必须是整形&#xff08;int,char,short等&#xff09;。 ②成员后边有冒号和数字&#xff0c;表示该成员占几个bit位…

【译】MySQL复制入门: 探索不同类型的MySQL复制解决方案

原文地址&#xff1a;An Introduction to MySQL Replication: Exploring Different Types of MySQL Replication Solutions 在这篇博文中&#xff0c;我将深入介绍 MySQL 复制&#xff0c;回答它是什么、如何工作、它的优势和挑战&#xff0c;并回顾作为 MySQL 环境&#xff0…

“智能体时代:探索无限可能——零代码构建智能教练智能体“

随着智能体技术的飞速发展&#xff0c;各个领域正经历着空前的变革和新的发展机遇。作为人工智能的一个关键组成部分&#xff0c;智能体以其自我驱动、智能响应和适应能力&#xff0c;逐渐深入到我们日常生活的各个层面&#xff0c;成为促进社会发展和科技进步的新引擎。 顺应这…

深度神经网络——贝叶斯与朴素贝叶斯定理

概述 贝叶斯定理是概率论中一个非常重要的概念&#xff0c;它提供了一种在已知某些相关事件的概率时&#xff0c;计算另一个事件发生概率的方法。在你提供的内容中&#xff0c;贝叶斯定理被描述为一种“魔法”&#xff0c;因为它能够使计算机通过分析大量的数据来预测人们可能…

十四天学会Vue——Vue核心(理论+实战)中篇(第二天)

声明&#xff1a;是接着上篇讲的哦&#xff0c;感兴趣可以去看一看~ 这里一些代码就不写了&#xff0c;为了缩减代码量&#xff0c;大家知道就可以了&#xff1a; Vue.config.productionTip false //阻止 vue 在启动时生成生产提示。热身小tips&#xff0c;可以安装这个插件&…

【LeetCode】【9】回文数(1047字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;LeetCode 刷题指南&#xff1a;LeetCode刷题指南 题目描述 给一个整数x&#xff0c;如果x是一个回文整数&#xff0c;返回true&#xff1b;否…

MIT6.828 Lab2-1 Using gdb

Using gdb gdb使用&#xff1a; xv6 gdb调试方法 问题1&#xff1a; Looking at the backtrace output, which function called syscall? 按照提示开启gdb后键入&#xff1a; b syscall c layout src backtrace输出结果&#xff1a; (gdb) backtrace #0 syscall () at k…

Python + adb 实现打电话功能

前言 其实很多年前写过一篇python打电话的功能&#xff0c;链接如下&#xff1a; Python twilio 实现打电话和发短信功能_自动发短信代码-CSDN博客 今天由于工作需要&#xff0c;又用python写了个关于打电话的小工具&#xff0c;主要是通过ADB方式实现的 实现过程 1.先利用…

YOLOv8+PyQt5鸟类检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

资源包含可视化的鸟类检测系统&#xff0c;基于最新的YOLOv8训练的鸟类检测模型&#xff0c;和基于PyQt5制作的可视化鸟类检测系统&#xff0c;包含登陆页面、注册页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的各种鸟类&#xff0c;以及自动开启摄像头…

Putty: 随心御剑——远程启动服务工具plink

一、引言:如何远程控制 也许你会有这样的场景,交互程序(以下简称UI程序)跑在windows端,而控制程序跑在Linux上。我们想要通过windows端 UI程序来启动Linux下面的服务,来一场酣畅淋漓的御剑飞行咋办,难道要自己十年磨一剑,在Linux下编写一个受控服务程序么.计算机科技发…

如何创建一个vue项目?详细教程,如何创建第一个vue项目?

已经安装node.js在自己找的到的地方新建一个文件夹用于存放项目&#xff0c;记住文件夹的存放路径&#xff0c;以我为例&#xff0c;我的文件夹路径为D:\tydic 打开cmd命令窗口&#xff0c;进入刚刚的新建文件夹 切换硬盘&#xff1a; D: 进入文件夹&#xff1a;cd tydic 使…

重学java 49 List接口

但逢良辰&#xff0c;顺颂时宜 —— 24.5.28 一、List接口 1.概述: 是collection接口的子接口 2.常见的实现类: ArrayList LinkedList Vector 二、List集合下的实现类 1.ArrayList集合的使用及源码分析 1.概述 ArrayList是List接口的实现类 2.特点 a.元素有序 —> 按照什么顺…

红外成像人员检测数据集VOC+YOLO格式5838张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5838 标注数量(xml文件个数)&#xff1a;5838 标注数量(txt文件个数)&#xff1a;5838 标注…

UE5 CommonUI的使用(附源码版)

UE5 CommonUI的使用 前言快速配置配置Game Viewport Client ClassCommonGameViewportClient源代码 创建CommonInputAction表默认导航Action设置CommonUIInputData源码 Bind CommonInputBaseControllerDataCommonInputBaseControllerData源码 Common UI控件库和控件样式CommonUs…

探索Python编程乐趣:制作气泡反弹小游戏

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;Python编程的轻松入门 二、游戏实现原理&#xff1a;气泡反弹的逻辑 …

echarts(6大基础图表)的使用

目录 一、vue2挂载 二、柱状图 2.1、基础柱状图介绍 2.2、标记&#xff1a;最大值\最小值(markPoint)、平均值(markLine) 2.3、显示&#xff1a;数值显示(label)、柱子宽度(barWidth)、横向柱状图 三、折线图 3.1、标记&#xff1a;最大值\最小值(markPoint)、平均值(ma…

微信资源混淆,导致的约束布局 Constraintlayout 控件重叠!

问题 1、广告六要素 虽然我不参与广告 sdk 接入等相关工作&#xff0c;但是最近总是听到一个词广告六要素。这到底是什么&#xff1f; 国内下载类广告&#xff0c;尤其是针对移动应用推广的广告&#xff0c;其成功实施往往围绕几个关键要素进行&#xff0c;这些要素能够帮助…

pcdn服务器应该怎么配?

要配置PCDN&#xff08;Private Content Delivery Network&#xff09;服务器&#xff0c;可以按照以下步骤进行&#xff1a; 需求分析&#xff1a;明确业务需求&#xff0c;确定所需的CDN功能和性能参数。这包括预期的流量、负载、内容类型、目标用户群体等。 硬件选择&#…

你真的懂firewalld吗?不妨看看我的这篇文章

一、firewalld简介 firewalld防火墙是Linux系统上的一种动态防火墙管理工具&#xff0c;它是Red Hat公司开发的&#xff0c;并在许多Linux发行版中被采用。相对于传统的静态防火墙规则&#xff0c;firewalld使用动态的方式来管理防火墙规则&#xff0c;可以更加灵活地适应不同…

MyBatis的基础操作

目录 一.什么是MyBatis? 二.使用MyBatis的准备工作 1.引入依赖: 2.配置数据库连接字符串(建立MaBatis和MySQL的连接) 3.在model包中建立数据库对应的实体类UserInfo 三.通过注解的方式实现MyBatis的开发 1.插入语句(Insert) 2.删除语句(Delete) 3.更新语句(Update) 4…