写点什么

软件测试 | Jenkins API 数据提取能力

  • 2024-05-29
    北京
  • 本文字数:1795 字

    阅读完需:约 6 分钟

Jenkins 提供了强大的 RESTful API,允许用户从 Jenkins 服务器中提取各种数据,包括构建信息、Job 状态、配置详情等。这些 API 可用于自动化脚本、外部应用集成、监控和报告生成等场景。本文将介绍如何使用 Jenkins API 提取数据,展示一些常用的 API 调用和示例。

一、Jenkins API 基础

Jenkins API 使用 HTTP 请求进行数据交互,支持 JSON 和 XML 格式的响应数据。大部分请求都需要进行身份验证,可以使用 API Token 或 Basic Auth 进行认证。

  1. API Token 获取

  • 登录 Jenkins 管理控制台。

  • 点击右上角的用户名,进入“Configure”页面。

  • 在“API Token”部分,生成一个新的 Token。

API 请求格式

  • 基本 URL 格式:

http://<jenkins-server>/api/json
复制代码
  • 使用 curl 进行身份验证示例:

使用 curl 进行身份验证示例:
复制代码

二、常用 API 调用示例

  1. 获取 Jenkins 概况

curl -u <username>:<api-token> http://<jenkins-server>/api/json
复制代码

返回的数据包括 Jenkins 版本、节点信息、插件等。

2.获取所有 Jobs 列表

curl -u <username>:<api-token> http://<jenkins-server>/api/json?tree=jobs[name,color]
复制代码

tree 参数用于指定所需的数据字段,减少不必要的数据传输。

3. 获取特定 Job 信息

curl -u <username>:<api-token> http://<jenkins-server>/job/<job-name>/api/json
复制代码

返回的数据包括 Job 的配置、最近构建状态、健康报告等。

4.获取特定构造信息

curl -u <username>:<api-token> http://<jenkins-server>/job/<job-name>/<build-number>/api/json
复制代码

返回的数据包括构建参数、触发原因、构建日志 URL 等。

5.触发构建

curl -u <username>:<api-token> -X POST http://<jenkins-server>/job/<job-name>/build
复制代码

可以通过添加参数来触发带参数的构建:

curl -u <username>:<api-token> -X POST http://<jenkins-server>/job/<job-name>/buildWithParameters?PARAM1=value1&PARAM2=value2
复制代码

三、API 数据提取示例

以下是一些常见的 API 数据提取示例,使用 Python 和 requests 库进行演示。

  1. 安装 requests 库

pip install requests
复制代码

2.提取 Jenkins 概况信息

import requestsfrom requests.auth import HTTPBasicAuth
jenkins_url = "http://<jenkins-server>/api/json"username = "<username>"api_token = "<api-token>"
response = requests.get(jenkins_url, auth=HTTPBasicAuth(username, api_token))data = response.json()print(data)
复制代码

3.获取所有 Jobs 列表

jenkins_url = "http://<jenkins-server>/api/json?tree=jobs[name,color]"response = requests.get(jenkins_url, auth=HTTPBasicAuth(username, api_token))jobs = response.json()['jobs']for job in jobs:    print(f"Job Name: {job['name']}, Status: {job['color']}")
复制代码

4.获取特定 Job 的最近构建状态

job_name = "<job-name>"jenkins_url = f"http://<jenkins-server>/job/{job_name}/api/json"response = requests.get(jenkins_url, auth=HTTPBasicAuth(username, api_token))job_info = response.json()last_build = job_info['lastBuild']last_build_url = last_build['url'] + 'api/json'last_build_info = requests.get(last_build_url, auth=HTTPBasicAuth(username, api_token)).json()print(f"Last Build Number: {last_build_info['number']}, Status: {last_build_info['result']}")
复制代码

5.触发构建并传递参数

job_name = "<job-name>"params = {"PARAM1": "value1", "PARAM2": "value2"}jenkins_url = f"http://<jenkins-server>/job/{job_name}/buildWithParameters"response = requests.post(jenkins_url, params=params, auth=HTTPBasicAuth(username, api_token))print("Build triggered" if response.status_code == 201 else "Failed to trigger build")
复制代码

四、最佳实践

  1. 安全性

  • 尽量使用 API Token 而不是密码进行认证。

  • 使用 HTTPS 加密连接,确保数据传输安全。

  • 限制 API Token 权限,只授予必要的权限。

高效性

  • 使用 tree 或 depth 参数,只提取需要的数据字段,减少数据传输量。

  • 结合 Jenkins Webhooks,实现实时数据更新和事件驱动的操作。

错误处理

  • 检查 HTTP 响应状态码,处理不同的错误情况。

  • 使用重试机制处理临时性网络问题。

通过使用 Jenkins API,你可以高效地提取和管理 Jenkins 的数据,实现自动化脚本、监控、报告生成等功能。这不仅提高了工作效率,还增强了 Jenkins 的可操作性和灵活性。


用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | Jenkins API 数据提取能力_测试_测吧(北京)科技有限公司_InfoQ写作社区