dsh-jenkins-plugin:在 DSH Web 侧栏里盯 Jenkins 构建

前言

用 DeepSeek Harness(DSH)写代码、跑智能体时,CI 往往在另一套 Jenkins 页面上。要确认某次构建跑到哪一阶段、失败原因是什么,通常得切浏览器、翻控制台日志,再把片段贴回对话里让模型帮忙看。插件 dsh-jenkins-plugin(维护者 Endless-zby,社区分类为工作流)把 Jenkins 接到 DSH 的 Web GUI:右侧边栏出现 Jenkins 面板,关注的 Job 以卡片形式推送实时进度;构建失败时可在面板内一键把日志交给当前会话里的模型诊断。模型侧还提供一组 Jenkins 工具,在策略与审批允许时查询 Job、读日志、触发或取消构建。下面介绍它解决什么问题、具备哪些能力,以及如何安装与使用。

这是什么

dsh-jenkins-plugin 是面向 DeepSeek Harness 的 Jenkins 集成插件。npm 包名 dsh-jenkins-plugin,当前资料中的版本为 0.1.1,许可证 MIT,源码仓库:https://github.com/Endless-zby/dsh-jenkins-plugin。

它主要做两件事:

  1. Web 侧栏面板:在 dsh web 右侧边栏提供 Jenkins 标签,用 SSE 流展示已关注 Job 的构建状态、阶段进度与变更说明,并支持在面板内下钻历史、详情、控制台与制品,多数操作不必打开 Jenkins 原站。
  2. 模型工具:向当前 Harness 会话注册 jenkins_jobs、jenkins_build_status、jenkins_log 等工具,供模型在 operator 审批与插件策略允许时主动查 Jenkins。

网络请求仅发往你在设置里配置的 Jenkins 地址;凭据通过 DSH 凭据服务解析,插件本地的 $DSH_HOME/jenkins.json 只存 URL、账号与凭据引用名,不存明文密码。

核心功能

侧栏面板

Jenkins 面板包含两个模块(资料中的命名):

  • Following:每个已关注 Job 一张卡片——状态点、构建号、结果标签、实时进度条、当前运行阶段名、本次构建的变更说明;若控制器上报 Maven 项目版本也会显示。数据来自 SSE,不是整页轮询 Jenkins。
  • All jobs:默认折叠;每行末尾 ☆/★ 用于关注或取消关注。

点击 Job 或卡片可在面板内逐级下钻:构建历史(分页)→ 单次构建详情(阶段条、内嵌控制台、测试摘要、变更集、制品)。下载制品是少数会打开 Jenkins 页面的操作。

面板内的写操作遵循「按钮 → 行内确认 → 执行 → 结果就地展示」:

操作 说明
触发构建 带参 Job 提供 KEY=VALUE 输入框
Rebuild 仅失败构建;复用失败那次构建的参数
Abort 默认关闭,需在策略中开启 allowCancel
Hand to AI 仅失败构建;将日志尾部、阶段与变更集送入当前会话模型,回答出现在对话中

列入 denyJobs 的 Job 无论开关如何,插件不会向 Jenkins 发起任何请求。

模型可调用的工具

工具 用途
jenkins_jobs 列出 Job 及状态,可选附带近期构建历史
jenkins_build_status 单次构建的结果、耗时、Pipeline 阶段、变更集、测试摘要
jenkins_log 控制台日志,默认读尾部,可用 next_offset 续读
jenkins_workspace 构建工作区目录或制品列表(读工作区需 Jenkins Workspace API 插件)
jenkins_build 触发或取消构建——唯一的写工具;先过 denyJobs/allow.*,再需 operator 审批

多实例与通知

设置页可配置多个 Jenkins 控制器;保存前对每一行做「测试连接」,任一行失败则整次保存拒绝且不写入。面板页脚可切换实例,当前实例以绿色标记。实例列表与关注 Job 保存在 $DSH_HOME/jenkins.json。

已关注 Job 的构建结束时,通过平台自身的后台任务机制通知一次,同一构建不会重复公告。

可选 Failure wake(notifyWakeOnFailure,默认关):当已关注的 Job 失败时,自动把与「Hand to AI」相同的内容(日志尾、阶段、提交)交给关注时所在会话;仅真实 failure 触发(unstable、aborted 不会),每个构建最多唤醒一次;会话已关闭则静默跳过。allowAnalyze: false 也会关闭该行为。

安装与启用

官方推荐从 npm 安装,包内为预构建产物,无需安装时编译:

dsh plugin --profile web add dsh-jenkins-plugin

安装后重启 dsh web,打开 Settings → Jenkins,添加实例(URL、账号、密码或 API Token)并保存;右侧边栏会出现 Jenkins 面板。

其他安装方式(资料原文):

# tarball(离线或内部分发)
dsh plugin --profile web add ./dsh-jenkins-plugin-0.1.0.tgz

# 从 git 源码:profile 须允许 prepare 脚本构建(pnpm ≥10 默认会阻止)
dsh plugin --profile web add github:<owner>/dsh-jenkins-plugin

从 git 安装拉取的是源码而非构建产物,需在 profile 的 pnpm-workspace.yaml 中允许该包的 prepare 脚本:

allowBuilds:
  dsh-jenkins-plugin: true

这是允许该包代码在安装时于本机执行——仅对可信源码开启,并建议固定提交:github:<owner>/dsh-jenkins-plugin#<sha>。若不想承担该步骤,使用 npm 或 tarball 即可。

典型用法

  1. 日常盯构建:在 All jobs 中对常用 Job 点 ★ 加入 Following;开发时在 DSH Web 侧栏看进度条与阶段名,构建结束收到一次完成通知。
  2. 失败排查:构建失败后点 Hand to AI,或依赖已开启的 notifyWakeOnFailure,让当前会话模型基于默认最多 16 KiB 失败日志(analyzeLogBytes)与阶段、变更集给出说明。
  3. 让模型查 CI:在对话中由模型调用 jenkins_build_status、jenkins_log 等;触发或取消构建走 jenkins_build,需策略允许且经 operator 审批。
  4. 带参重跑:对失败构建使用 Rebuild,参数与失败那次一致;新构建可在面板内 Trigger 并填写 KEY=VALUE。

参数化 Job 的历史列表页还提供参数框与触发控件(见仓库文档截图路径 doc/panel-drilldown-1.png)。

权限、风险与兼容性

安装前建议阅读

  • 写权限:可触发、取消构建。allowTrigger 默认开启,allowCancel 默认关闭;denyJobs 硬拒绝指定 Job(含整个文件夹)。模型侧写操作额外需要审批;面板点击同样经行内确认与策略检查。
  • 日志进入模型上下文:「Hand to AI」与 jenkins_log 会把控制台日志作为 prompt 的一部分发给模型。Jenkins 日志是不可信输入,可能含针对模型的任意文本,应按不可信数据处理。
  • 本地状态:$DSH_HOME/jenkins.json 与 DSH 凭据存储;插件不会自行触发构建,只有你的点击或模型显式调用才会。
  • 插件运行方式:DSH 插件以当前 dsh 进程权限运行;安装前应查看源码与 MIT 许可证,并只配置你信任的 Jenkins 地址。

版本与环境

资料中插件与 Harness 的对应关系:

  • Harness:构建与验证针对 0.1.6-alpha.2(engines.dsh 与 peer 均锁定该版本)。
  • Node:^22.19.0 || >=24.0.0,与 Harness 一致。
  • 界面:面板为 Web GUI(dsh web),在 Web 组合上验证。
  • Jenkins:在 Jenkins 2.176.2 上验证(含 FreeStyle、Maven Job;资料提及约 777 个 Job 的实例)。需注意的降级行为:
  • Pipeline 阶段依赖 Blue Ocean 的 wfapi;无 Pipeline 时阶段列表为空,卡片回退为耗时估计。
  • 无 Workspace API 插件时,jenkins_workspace 会明确说明而非假装成功。
  • Maven 版本来自 mavenArtifacts/api/json,仅 Maven Job 有响应。

结尾

若你希望在使用 DSH Web 开发的同时,把 Jenkins CI 的进度、日志与失败诊断收拢到同一界面,dsh-jenkins-plugin 提供了侧栏实时面板、失败一键交模型,以及可审批的 Jenkins 工具集。社区目录页:https://www.skillhub.cn/plugins/Endless-zby/dsh-jenkins-plugin;详细说明与截图见 GitHub README:https://github.com/Endless-zby/dsh-jenkins-plugin。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜