Python-jenkins模块:详解jobs执行状态获取与控制

3 下载量 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的自动化管理效率。