Jenkins日志提取服务器

MCP服务器是一个用于从Jenkins提取构建日志并将其转换为结构化XML格式的工具,适用于持续集成和日志分析场景。

  • by yaseenkadlemakki
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yaseenkadlemakki/mcp_jenkins

使用说明

Jenkins日志提取的MCP服务器-用户指南

概述

主控制程序(MCP)服务器旨在从Jenkins中提取构建日志,并将其转换为有意义的XML格式。本指南提供了有关如何设置和使用MCP服务器的说明。

特性

  • 通过REST API从Jenkins提取构建日志
  • 支持对Jenkins的身份验证访问
  • 可配置的Jenkins URL(适用于演示和真实实例)
  • 解析构建日志以提取有意义的信息
  • 将解析后的日志转换为结构化XML格式
  • 命令行界面,操作简单

安装

先决条件

  • Python 3.11或更高版本
  • pip包管理器

依赖项

MCP服务器需要以下Python包:

  • 请求:
  • pyyaml
  • 矿业有限公司

您可以使用pip安装这些依赖项:

pip install requests pyyaml lxml

配置

MCP服务器使用位于以下位置的YAML配置文件 config/config.yaml。您可以自定义此文件以匹配您的Jenkins环境:

jenkins:
  url: "http://your-jenkins-server:8080"  # Your Jenkins URL
  auth:
    type: "token"  # or "basic"
    username: "your-username"  # Required for both token and basic auth
    token: "your-api-token"    # Required for token auth
    password: "your-password"  # Required for basic auth

logging:
  level: "INFO"  # DEBUG, INFO, WARNING, ERROR, CRITICAL
  file: "mcp_server.log"

output:
  xml_path: "output/jenkins_logs.xml"
  pretty_print: true

认证

MCP服务器支持两种身份验证方法:

  1. 令牌身份验证 (推荐)

    • 集 auth.type 向 "token"
    • 在中提供您的Jenkins用户名 auth.username
    • 在中提供您的Jenkins API令牌 auth.token
  2. 基本身份验证

    • 集 auth.type 向 "basic"
    • 在中提供您的Jenkins用户名 auth.username
    • 在中提供您的Jenkins密码 auth.password

要生成Jenkins API令牌,请执行以下操作:

  1. 登录您的Jenkins实例
  2. 点击右上角的用户名
  3. 点击左侧边栏中的“配置”
  4. 点击API代币部分的“添加新代币”
  5. 为您的令牌命名,然后单击“生成”
  6. 复制生成的令牌并在配置中使用

用法

命令行接口

MCP服务器提供了一个用于提取日志的命令行界面:

python cli.py --job JOB_NAME [--limit LIMIT] [--output OUTPUT_PATH] [--config CONFIG_PATH] [--verbose]

论据:

  • --job, -j:Jenkins作业名称(必填)
  • --limit, -l:要检索的最大内部版本数(默认值:1)
  • --output, -o:保存XML输出的路径(默认:output/jenkins_logs.XML)
  • --config, -c:配置文件的路径(默认:config/config.yaml)
  • --verbose, -v:启用详细日志记录

例子:

python cli.py --job my-jenkins-job --limit 5 --output my_logs.xml

用作图书馆

您还可以将MCP服务器用作Python代码中的库:

from src.mcp_server import MCPServer

# Initialize MCP server with custom config
server = MCPServer('path/to/config.yaml')

# Process a job and get XML output path
xml_path = server.process_job('my-jenkins-job', limit=5, output_path='my_logs.xml')

print(f"XML output saved to: {xml_path}")

XML输出格式

MCP服务器生成具有以下结构的XML输出:

<?xml version="1.0" ?>
<jenkins_build_log>
  <build_info>
    <job_name>my-jenkins-job</job_name>
    <build_number>123</build_number>
    <status>SUCCESS</status>
    <timestamp>2025-05-23T12:34:56</timestamp>
    <started_by>user</started_by>
    <workspace>/var/lib/jenkins/workspace/my-jenkins-job</workspace>
    <checkout>refs/remotes/origin/main</checkout>
    <duration>120</duration>
  </build_info>
  <errors>
    <error>
      <line_number>42</line_number>
      <text>ERROR: Build failed due to compilation error</text>
    </error>
  </errors>
  <warnings>
    <warning>
      <line_number>21</line_number>
      <text>WARNING: Deprecated API usage detected</text>
    </warning>
  </warnings>
  <stages>
    <stage>
      <name>Build</name>
      <start_line>10</start_line>
      <end_line>50</end_line>
    </stage>
    <stage>
      <name>Test</name>
      <start_line>51</start_line>
      <end_line>100</end_line>
    </stage>
  </stages>
  <log_lines>
    <line>
      <number>1</number>
      <text>Started by user</text>
    </line>
    <!-- Additional log lines -->
  </log_lines>
</jenkins_build_log>

故障排除

常见问题

  1. 认证失败

    • 验证您的Jenkins URL是否正确
    • 检查您的用户名和令牌/密码是否正确
    • 确保您的用户在Jenkins中具有适当的权限
  2. 找不到作业

    • 验证作业名称是否正确,是否存在于Jenkins中
    • 检查您的用户是否有权访问指定的作业
  3. XML输出问题

    • 确保输出目录存在并且可写
    • 检查日志文件以获取详细的错误消息

日志记录

MCP服务器将详细信息记录到配置中指定的文件中。您可以将日志记录级别设置为DEBUG以获取更多详细信息:

logging:
  level: "DEBUG"
  file: "mcp_server.log"

建筑

MCP服务器采用模块化架构,包含以下组件:

  1. 配置管理器:处理配置加载和验证
  2. 身份验证模块:管理Jenkins身份验证
  3. Jenkins API客户:与Jenkins REST API通信
  4. 日志解析器:处理原始Jenkins构建日志
  5. XML转换器:将解析的日志数据转换为XML格式
  6. MCP核心服务器:协调组件之间的工作流
  7. CLI接口:提供命令行界面

扩展MCP服务器

模块化架构使扩展MCP服务器变得容易:

  • 添加对其他Jenkins日志类型的支持
  • 实现替代输出格式(JSON、CSV)
  • 添加与监控系统的集成
  • 实现实时日志流

许可证

本软件按原样提供,不提供任何保修。使用风险自负。