Jenkins 提供了强大的 RESTful API,允许用户从 Jenkins 服务器中提取各种数据,包括构建信息、Job 状态、配置详情等。这些 API 可用于自动化脚本、外部应用集成、监控和报告生成等场景。本文将介绍如何使用 Jenkins API 提取数据,展示一些常用的 API 调用和示例。
一、Jenkins API 基础
Jenkins API 使用 HTTP 请求进行数据交互,支持 JSON 和 XML 格式的响应数据。大部分请求都需要进行身份验证,可以使用 API Token 或 Basic Auth 进行认证。
API Token 获取
API 请求格式
 http://<jenkins-server>/api/json
       复制代码
 二、常用 API 调用示例
获取 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 库进行演示。
安装 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")
       复制代码
 四、最佳实践
安全性
高效性
错误处理
检查 HTTP 响应状态码,处理不同的错误情况。
使用重试机制处理临时性网络问题。
通过使用 Jenkins API,你可以高效地提取和管理 Jenkins 的数据,实现自动化脚本、监控、报告生成等功能。这不仅提高了工作效率,还增强了 Jenkins 的可操作性和灵活性。
评论