Explain Error 插件结合美团AI(Longcat) 解释 Jenkins 构建失败日志

Explain Error 插件结合美团AI(Longcat) 解释 Jenkins 构建失败日志

项目简介

🤖 Explain Error 是一个 AI 驱动的 Jenkins 插件,能够自动解释构建失败原因,将复杂的日志转化为易读的分析报告。

核心特性

  • 自动分析:构建失败时自动触发 AI 分析
  • 🎯 精准定位:快速识别编译错误、测试失败、部署问题等
  • 🔌 多模型支持:支持 OpenAI、Google Gemini、Ollama 及兼容 OpenAI API 的服务(如美团 Longcat、DeepSeek 等)
  • 🚀 Pipeline 集成:可在 Pipeline 中使用 explainError() 步骤
  • 🌐 离线部署:支持本地 Ollama 模型,适合内网环境

使用场景

厌倦了翻阅冗长的 Jenkins 日志来查找问题?Explain Error 插件利用 AI 自动解释作业和流水线失败原因,节省时间并帮助你更快修复问题。

项目链接

前置要求

  • Jenkins 版本:≥ 2.479.3(推荐使用 LTS 版本)
  • AI 服务:需要以下任一服务的 API 密钥
    • OpenAI API Key(获取地址
    • Google Gemini API Key(获取地址
    • Ollama 本地部署(无需 API Key)
    • 其他兼容 OpenAI API 的服务(如美团 Longcat、DeepSeek 等)

提示:我这边使用美团的Longcat,毕竟能白嫖!

安装步骤

方式一:通过插件管理器安装(推荐)

  1. 进入 Jenkins 管理插件管理可选插件
  2. 搜索 Explain Error
  3. 勾选并点击 安装
  4. 安装完成后重启 Jenkins

方式二:手动安装

  1. Jenkins 插件中心 下载最新的 .hpi 文件
  2. 进入 Jenkins 管理插件管理高级
  3. 在 “上传插件” 区域选择下载的 .hpi 文件
  4. 点击 上传 并重启 Jenkins

配置指南

全局配置

进入 Jenkins 管理系统配置 → 找到 Explain Error Plugin Configuration 区域

配置项说明

配置项 说明 默认值
Enable AI Error Explanation 启用/禁用插件功能 ✅ 已启用
AI Provider 选择 AI 提供商 OpenAI
API Key AI 服务的 API 密钥 从对应平台获取
API URL AI 服务端点地址 官方 API 留空;自定义服务需填写完整 URL
AI Model 使用的模型名称 必填,根据提供商选择

Explain Error Plugin Configuration 中填写以下信息:

# 配置示例
AI Provider: OpenAI  # Longcat 兼容 OpenAI API
API Key: <你的 Longcat API Key>
API URL: <Longcat API 地址>  # 从接口文档获取
AI Model: <模型名称>  

配置说明
– Longcat 使用 OpenAI 兼容接口,因此 AI Provider 选择 OpenAI
– API URL 必须填写完整的 Longcat 接口地址(参考官方文档)
– 模型名称根据 Longcat 提供的模型列表选择

提示:插件现已支持中文反馈!在 Pipeline 中使用 language: 'Chinese' 参数即可获得中文分析结果。

测试配置

配置完成后,点击 Test Configuration 按钮验证设置是否正确。

配置界面示例


接入美团 Longcat AI 模型(免费额度)

环境说明

申请步骤

  1. 访问 https://longcat.chat/
  2. 注册并登录账号
  3. 在控制台获取 API Key 和接口文档

Longcat 申请界面


使用方法

方法一:Pipeline 步骤(推荐)

在 Pipeline 的 post 块中使用 explainError() 步骤:

基础用法

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                // 构建步骤
                sh 'mvn clean package'
            }
        }
    }

    post {
        failure {
            // 构建失败时自动触发 AI 分析
            explainError()
        }
    }
}

高级用法(带参数)

post {
    failure {
        explainError(
            maxLogLines: 1000,           // 最多分析 1000 行日志(默认:全部)
            logPattern: '.*ERROR.*',     // 只分析包含 ERROR 的日志行(正则表达式)
            language: '中文'          // 设置分析结果语言为中文(默认:English)
        )
    }
}

可选参数说明

参数 类型 说明 默认值
maxLogLines Integer 限制分析的日志行数 全部
logPattern String 正则表达式,只分析匹配的日志行
language String 分析结果语言(支持:English中文 English

中文分析示例

post {
    failure {
        // 使用中文分析,并限制日志行数
        explainError(
            maxLogLines: 500,
            language: '中文'
        )
    }
}

结合企业微信通知

post {
    failure {
        // 先执行 AI 分析(中文输出)
        explainError(language: '中文')

        // 再发送企业微信通知
        script {
            withCredentials([string(credentialsId: "${env.WEBHOOK_URL}", variable: 'url')]) {
                def utils = new utils()
                def msg = utils.buildMessage(this, 'failure', false)

                sh """
                    curl -s '${url}' \
                    -H 'Content-Type: application/json' \
                    -d '{
                        "msgtype": "markdown",
                        "markdown": {
                            "content": "${msg.replaceAll("\n", "\\\\n")}"
                        }
                    }'
                """
            }
        }
    }
}

方法二:手动控制台分析

适用于 Freestyle、Declarative 或任何类型的 Job。

  1. 打开失败构建的控制台输出页面
  2. 点击顶部的 Explain Error 按钮
  3. 等待 AI 分析完成
  4. 查看按钮下方显示的分析结果

使用示例

提示:分析结果会直接显示在构建页面的侧边栏中,无需跳转到其他页面。


Token 使用优化建议

针对美团 Longcat 每日 500 万 Token 额度,建议采取以下策略:

1. 日志截取策略

// 只分析最后 500 行日志,使用中文输出
explainError(
    maxLogLines: 500,
    language: '中文'
)

优势
– 减少 Token 消耗
– 加快分析速度
– 关键错误通常在日志末尾
– 中文输出更易理解

2. 日志过滤策略

// 只分析包含 ERROR 或 FAILED 的日志行,使用中文输出
explainError(
    logPattern: '.*(ERROR|FAILED).*',
    language: '中文'
)

优势
– 精准定位错误信息
– 大幅降低 Token 使用量
– 提高分析准确性
– 中文反馈更友好

3. 综合优化策略(推荐)

post {
    failure {
        // 结合日志截取和过滤,使用中文输出
        explainError(
            maxLogLines: 500,
            logPattern: '.*(ERROR|FAILED|Exception).*',
            language: '中文'
        )
    }
}

优势
– 最大化 Token 利用效率
– 快速定位关键错误
– 中文分析结果便于团队协作

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇