Python-jenkins模块:详解jobs执行状态获取与控制
180 浏览量
更新于2024-08-31
收藏 292KB PDF 举报
本文将详细介绍如何使用Python-jenkins模块有效地获取Jenkins jobs的执行状态,包括但不限于检查任务的存在性、获取最近的完成或失败状态、监控job的实时状态以及执行job。Python-jenkins模块提供了一个方便的接口,使得在Python环境中与Jenkins服务器进行交互变得简单。
首先,我们需要通过`jenkins.Jenkins()`函数连接到Jenkins服务器,传入服务器的URL、用户名和密码。例如,`server_1 = jenkins.Jenkins('http://%s:%s@192.168.37.134:8081/', username, password)`。在进行任何操作之前,确保目标job存在是关键步骤,如`server_1.assert_job_exists('2019/get_node_list')`。
为了获取job的执行状态,我们可以利用`get_job_info`方法来获取job的详细信息,特别是关于最近一次完成build的编号,如`lastCompletedBuild['number']`。同时,`get_build_info`方法用于检查build的结果,可以区分SUCCESS、FAILURE或ABORTED。例如,`server_1.get_build_info('2019/get_node_list', 3)['result']`。
查看build的详细输出可以使用`get_build_console_output`方法,但需要注意的是,在job执行过程中,输出可能不准确,因此最好在job完成后再获取状态信息。另外,为了处理job可能的RUNNING或PENDING状态,我们可以通过异常处理来判断job是否在队列中,代码如下:
```python
def get_jobs_status(job_name, server):
try:
server.assert_job_exists(job_name)
except Exception as e:
print(e)
job_status = '1' # 假设job不存在或未定义
in_queue = server.get_job_info(job_name)['inQueue']
if in_queue:
job_status = 'pending' # 如果job在队列中,状态为pending
else:
# 获取实际的执行状态,如running、success、failure等
build_number = server.get_job_info(job_name)['lastCompletedBuild']['number']
build_result = server.get_build_info('2019/get_node_list', build_number)['result']
job_status = {
'SUCCESS': 'success',
'FAILURE': 'failure',
'ABORTED': 'aborted'
}.get(build_result, 'running')
return job_status
```
通过这个函数,你可以获取到一个job的当前状态,包括它是否在队列中,或者如果已经执行,其最终结果是什么。这在自动化测试、监控或调度任务时非常有用,可以帮助开发者更好地理解和管理Jenkins的工作流程。
总结来说,本文主要介绍了Python-jenkins模块在获取Jenkins jobs执行状态方面的核心功能,包括job存在性检查、状态识别、执行操作和实时状态跟踪,这些技巧有助于提高对Jenkins的自动化管理效率。
2020-09-16 上传
2020-12-17 上传
2021-04-02 上传
2020-12-17 上传
2021-01-30 上传
2022-02-01 上传
2022-01-12 上传
点击了解资源详情
weixin_38652870
- 粉丝: 5
- 资源: 904
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程