Advertisement

Python-Jenkins 获取Job构建信息的方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文章介绍了如何使用Python脚本来获取Jenkins中Job的构建信息,包括安装必要的库、连接到Jenkins以及提取和解析所需数据的具体方法。 Python-jenkins库用于与Jenkins服务器进行交互,并支持自动化管理作业(job)的各种操作,如启动构建、获取构建状态等。 要使用Python-jenkins来获取Job的构建信息,请首先安装该库: ``` pip install python-jenkins ``` 接下来是详细步骤: 1. **初始化连接**:创建一个Jenkins服务器实例,需要提供URL和认证凭据。 ```python from jenkins import Jenkins server = Jenkins(http://jenkins_url:port, username=username, password=password) ``` 2. **获取构建状态**: - 使用`get_queue_info()`方法检查作业是否在队列中等待构建。如果找到匹配的job名称,则表明该作业正在排队。 - 通过调用`get_build_info(name, build_number)`,可以获取到指定编号的构建详情和结果。 3. **封装功能**:为方便使用,将上述逻辑整合进一个函数如`get_build_state()`中。此函数首先检查job是否在队列等待,并返回相应的状态字符串(例如pending, success, failed, building)。 4. **API接口实现**: 在Web服务环境中创建HTTP接口以调用封装好的功能,使用Flask框架为例: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route(/api/getBuildState, methods=[POST]) def get_job_build_state(): data = request.get_json() job_name = data[job_name] server = Jenkins(http://jenkins_url:port, username=username, password=password) lastbuildNumber = server.get_job_info(job_name)[lastBuild][number] build_state = get_build_state(server, job_name, lastbuildNumber) build_msg = { SUCCESS: Success, FAILURE: Failed, ABORTED: Aborted}.get(build_state,Building) response = { code: 200, msg:OK, build_state : build_msg, buildNumber : lastbuildNumber } return jsonify(response) if __name__ == __main__: app.run(debug=True) ``` 此接口接收POST请求并返回构建状态和编号的JSON响应。 5. **测试接口**:使用requests库进行测试: ```python import requests data = {job_name: your_job_name} response = requests.post(http://localhost:5000/api/getBuildState, json=data) print(response.json()) ``` 这将返回指定作业的构建状态和编号。 总结来说,通过Python-jenkins库可以方便地获取Jenkins Job的状态,在自动化测试、持续集成监控等方面非常有用。结合API实现更复杂的任务如自动触发构建或发布等操作,并确保正确处理异常情况及安全存储认证信息至关重要。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Python-Jenkins Job
    优质
    本文章介绍了如何使用Python脚本来获取Jenkins中Job的构建信息,包括安装必要的库、连接到Jenkins以及提取和解析所需数据的具体方法。 Python-jenkins库用于与Jenkins服务器进行交互,并支持自动化管理作业(job)的各种操作,如启动构建、获取构建状态等。 要使用Python-jenkins来获取Job的构建信息,请首先安装该库: ``` pip install python-jenkins ``` 接下来是详细步骤: 1. **初始化连接**:创建一个Jenkins服务器实例,需要提供URL和认证凭据。 ```python from jenkins import Jenkins server = Jenkins(http://jenkins_url:port, username=username, password=password) ``` 2. **获取构建状态**: - 使用`get_queue_info()`方法检查作业是否在队列中等待构建。如果找到匹配的job名称,则表明该作业正在排队。 - 通过调用`get_build_info(name, build_number)`,可以获取到指定编号的构建详情和结果。 3. **封装功能**:为方便使用,将上述逻辑整合进一个函数如`get_build_state()`中。此函数首先检查job是否在队列等待,并返回相应的状态字符串(例如pending, success, failed, building)。 4. **API接口实现**: 在Web服务环境中创建HTTP接口以调用封装好的功能,使用Flask框架为例: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route(/api/getBuildState, methods=[POST]) def get_job_build_state(): data = request.get_json() job_name = data[job_name] server = Jenkins(http://jenkins_url:port, username=username, password=password) lastbuildNumber = server.get_job_info(job_name)[lastBuild][number] build_state = get_build_state(server, job_name, lastbuildNumber) build_msg = { SUCCESS: Success, FAILURE: Failed, ABORTED: Aborted}.get(build_state,Building) response = { code: 200, msg:OK, build_state : build_msg, buildNumber : lastbuildNumber } return jsonify(response) if __name__ == __main__: app.run(debug=True) ``` 此接口接收POST请求并返回构建状态和编号的JSON响应。 5. **测试接口**:使用requests库进行测试: ```python import requests data = {job_name: your_job_name} response = requests.post(http://localhost:5000/api/getBuildState, json=data) print(response.json()) ``` 这将返回指定作业的构建状态和编号。 总结来说,通过Python-jenkins库可以方便地获取Jenkins Job的状态,在自动化测试、持续集成监控等方面非常有用。结合API实现更复杂的任务如自动触发构建或发布等操作,并确保正确处理异常情况及安全存储认证信息至关重要。
  • USBVC++
    优质
    本文章介绍如何使用VC++编程语言获取计算机上USB设备的相关信息,包括设备名称、制造商等详细内容。 USB设备种类繁多,因此对它们的查找与读写变得非常重要。然而,关于如何进行USB操作的信息却相对较少。这里通过VC++展示了一些获取USB信息的方法。 一、枚举USB设备 可以通过以下步骤来实现:首先枚举USB控制器;接着遍历该控制器上的所有HUB(集线器);然后逐一检查每个端口以获得连接的设备信息。具体操作如下: - 为每一个主控器创建一个路径名,例如使用 \\\\.\\HCD1 和 \\\\.\\HCD2。 - 使用 `CreateFile` 函数打开这些控制器,并通过 `DeviceIoControl` 获取驱动程序名称和与之相连的HUB设备信息。 - 对于每个找到的HUB,再次调用 `CreateFile` 打开它并获取连接到该HUB的所有设备的信息。 二、枚举HID(人机接口)设备 这类设备包括USB鼠标和游戏手柄等。通过使用API函数 `HidD_GetHidGuid(&guidHID)` 来获得GUID,然后利用 `SetupDiEnumDeviceInterfaces` 函数来判断是否有相应的硬件连接到系统中。 如果发现有符合标准的设备,则可以进一步调用 `SetupDiGetDeviceInterfaceDetail` 获取其详细路径信息。接着打开该文件并使用 `HidD_GetAttributes` 来获取基本属性,或者通过发送特定命令给驱动程序(例如利用 `DeviceIoControl` 函数)来获得更详尽的信息。 在本示例代码中,如果计算机上安装了USB游戏手柄,则可以成功读取其信息。然而,在Windows XP操作系统下却无法正确识别出连接的USB鼠标。 三、枚举U盘 首先使用 API `GetDriveType` 来判断设备类型;如果是可移动存储(即返回值为REMOVABLE),则很可能是U盘。接下来,通过调用 `CreateFile` 函数打开该设备,并利用带有参数 IOCTL_STORAGE_QUERY_PROPERTY 的 `DeviceIoControl` 请求来获取有关其属性的详细信息。 四、总结 此示例项目已经能够在Windows XP环境下使用Visual C++ 6.0和XP DDK工具链成功编译运行。由于USB硬件种类繁多且控制软件各异,使得访问这些端口上的设备比串行或并行接口更为复杂。 本段落仅提供了基本的实现方案,并未涵盖所有问题(如某些特定鼠标型号在Windows XP上无法被正确识别等)。参考了诸如 USBPort 和 USBview 等开源项目。
  • Python图片属性实现
    优质
    本文介绍了如何使用Python编程语言来提取和分析图片的各种属性信息,包括尺寸、格式、颜色模式等,并提供了具体的代码示例。 本段落介绍了使用Python读取图片属性信息的方法,包括GPS信息、图片分辨率、像素大小、设备制造商以及拍摄设备等内容。有需要的朋友可以参考借鉴。
  • AndroidSIM卡
    优质
    本文将详细介绍在Android设备中如何编程式地获取SIM卡的相关信息,包括IMSI号、ICCID号等,并提供示例代码。 如何在Android设备上获取SIM卡的信息,包括手机平台、运营商等相关数据。
  • AndroidSIM卡
    优质
    本文介绍了如何在Android设备中通过编程方式获取SIM卡的相关信息,包括IMSI号、ICCID号等,并提供了相应的代码示例。 如何在Android设备上获取SIM卡的信息,包括手机平台和运营商等相关数据。
  • Python 蓝牙设备类型Bluetooth
    优质
    本文介绍了如何使用Python获取蓝牙设备类型的相关信息的方法和步骤,帮助开发者更好地理解和利用Bluetooth技术。 在使用Python的bluetooth模块扫描蓝牙设备时,获取的信息无法直接判断出该设备属于什么类型。例如: (74:60:FA:FD:FC:49, HUAWEI P30, 5898764) 这里的数字5898764可以用来识别具体的蓝牙设备类型。根据收集到的一些数据,我们可以将这些数值转换为对应的设备类型: ```python def bt_device_type(device_type): if device_type == 5898764: return Android ``` 注意这里的示例代码需要进一步完善以支持更多的设备类型识别。
  • JavaCV摄像头
    优质
    本文章介绍了如何使用JavaCV库来访问和获取计算机上连接的所有摄像头的信息,包括型号、分辨率等,并提供了详细的操作步骤与示例代码。 通过JavaCV让软件能够获取本地电脑的摄像头信息。通过JavaCV使软件可以访问并获得来自本地计算机的摄像头数据。简而言之,利用JavaCV技术可以让程序读取到连接在本机上的摄像头的相关信息。
  • Python当前登录用户实现
    优质
    本文介绍了如何在Python中获取当前系统登录用户的详细信息,包括用户名、UID、GID等,并提供了具体代码示例。 本段落主要介绍了如何使用Python获取当前登录用户的信息,并通过实例详细讲解了在Linux平台及Windows平台上利用相关模块来操作用户信息的方法。对于对此话题感兴趣的朋友来说,这是一篇非常实用的参考文章。
  • Python操作系统版本实现
    优质
    本文介绍了如何使用Python代码来获取操作系统的版本信息,并提供了多种方法和实例,帮助开发者轻松掌握此技术。 本段落介绍了使用Python获取操作系统版本信息的方法,并通过命令行展示了如何利用platform模块来获取操作系统的相关信息。对于需要此类功能的读者来说,这是一篇值得参考的文章。