前言¶
用 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。
它主要做两件事:
- Web 侧栏面板:在
dsh web右侧边栏提供 Jenkins 标签,用 SSE 流展示已关注 Job 的构建状态、阶段进度与变更说明,并支持在面板内下钻历史、详情、控制台与制品,多数操作不必打开 Jenkins 原站。 - 模型工具:向当前 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 即可。
典型用法¶
- 日常盯构建:在 All jobs 中对常用 Job 点 ★ 加入 Following;开发时在 DSH Web 侧栏看进度条与阶段名,构建结束收到一次完成通知。
- 失败排查:构建失败后点 Hand to AI,或依赖已开启的
notifyWakeOnFailure,让当前会话模型基于默认最多 16 KiB 失败日志(analyzeLogBytes)与阶段、变更集给出说明。 - 让模型查 CI:在对话中由模型调用
jenkins_build_status、jenkins_log等;触发或取消构建走jenkins_build,需策略允许且经 operator 审批。 - 带参重跑:对失败构建使用 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。