dsh-jenkins
Manages multiple Jenkins servers and triggers jobs from a Settings page, model tools, or a per-workspace "Run Jenkins Job" entry, with a bilingual host + browser UI.
Install
dsh plugin --profile web add dsh-jenkins
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✗ |
| 2 list | — |
| 3 mount | — |
| 4 boot | — |
dsh: initialized profile web at /home/node/.dsh/profiles/webFour stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-jenkins
<p align="center">
<img src="assets/preview/1.png" alt="dsh-jenkins 界面预览" width="800" />
</p>
dsh-jenkins 是基于 DeepSeek Harness(DSH)宿主的 Jenkins 服务器管理插件,
集中管理多台服务器与 Job,快速完成构建发布。
- 多服务器 / 多 Job 管理:集中配置、统一管理多台 Jenkins 服务器及其 Job
- 一键发布:参数化构建触发,实时跟踪「排队 → 构建中 → 结果」状态
- 日志与运维:随时查看构建日志,支持停止 / 取消构建
- 中英双语:界面跟随主界面语言切换
支持设置页、工作区入口与模型工具三种操作方式。
[English](README.md)
预览
设置页、工作区入口与执行/历史弹框的截图:见 [preview.md](preview.md)。
功能
- 设置 → Jenkins 配置 页(
settings.section):多服务器增删改查、测试连接、
跳过 TLS 校验。仅 服务器地址 与 Token 必填(用户名为选填,缺省 admin)。
- 项目配置(
$DSH_HOME/dsh-jenkins-map.json):所有项目的发布目标集中在一个文件里
—— 项目名 → 发布目标数组,元素结构与工作区配置文件完全一致
({ name?, job, server, environments })。每个环境可用 name 起显示名
(如 uat环境 / prod灰度 / prod环境),环境数量不限(留空按下标回退
UAT / 生产 / 环境 N)。各项目根目录的 dsh-jenkins.json/js/ts 会被自动发现
(以文件夹名为项目名,只补缺失、不覆盖已有项目),因此通常无需手工维护;
需要手改时,「配置」tab 的项目配置一行点「编辑 map」即可(表单 / JSON 双模式)。
详见下文「[项目配置(dsh-jenkins-map.json)](#项目配置dsh-jenkins-mapjson)」。
- 工作区入口(
sidebar.footer.action):侧边栏底部的一组按钮 —— Jenkins logo 按钮
(打开统一弹框)+ 历史按钮(时钟图标,查看所有工作区最近 50 次发布记录,
可按工作区筛选,默认全部)。
执行弹框的「发布」tab 只有三行:项目 → 服务器 → Job,随后是参数表单回显 →
提交构建 → 轮询状态(排队 → 构建中 → 结果,10 分钟超时)。
环境不单独占一行:项目配置里每个环境本来就对应一台服务器,所以环境选择就落在
【服务器】字段上 —— 下拉标签只显示插件里的服务器名(不混入配置里的环境名,
避免两套命名交叉显示),选中服务器即切到该环境对应的 Job / 参数。
服务器按 名称 / id / 完整地址 / 域名 依次匹配配置里的 server(域名一级忽略协议、
端口与上下文路径);下拉取「项目配置引用过的服务器 ∩ 插件已配置服务器」的交集。
上次发布的参数按项目记住,下次打开自动回显。
- 入口显隐:侧栏入口跟随「在菜单中显示」偏好(默认开启),可在 设置 → Jenkins 配置
分区页或执行弹框「配置」tab 顶部切换。关闭后入口渲染 null(不占位),宿主设置分区页
仍保留 打开 Jenkins 配置 按钮,弹框始终可达(两处同一个偏好源,改一处即时同步)。
- 模型工具(docs/develop/basic/tool):
dsh_jenkins_build、dsh_jenkins_status。 - 配置(docs/develop/basic/config):Schemastery
Config+ 插件数据文件
$DSH_HOME/dsh-jenkins.json(服务器 Token 以 $DSH_HOME/dsh-jenkins.key
机器绑定密钥加密,缓存明文);项目配置是独立文件
$DSH_HOME/dsh-jenkins-map.json(明文,可直接编辑)。首次运行时自动从旧版
settings.yaml 的 dsh-jenkins 命名空间一次性迁移并清空旧数据;旧版写在
dsh-jenkins.json 的 projects 字段也会自动迁到新文件(只补缺失)。
- 打包(docs/develop/basic/publish):
dsh.bundle+dsh.client(web) manifest。
文件结构
├── src/host/*.ts # 宿主半边源码:index.ts(入口)、jenkins.ts(curl 核心)、ops.ts(op 分发)、project-map.ts(项目配置文件)、projects.ts(归一化/合并)、workspace-config.ts、types.ts ├── src/client/*.tsx # 浏览器半边源码(React TSX 组件):设置页、底部入口、发布弹框、项目配置弹框、历史弹框 ├── lib/index.js # 宿主半边构建产物(tsdown,ESM),提交 git 以支持 git 安装 ├── lib/client.js # 浏览器半边构建产物(tsdown → __ModuleLoader__ 工厂),提交 git ├── lib/types/ # 类型声明(tsc -b 生成) ├── scripts/ # verify-client.mjs(模拟宿主 seed 表校验产物)+ 隔离测试 ├── examples/ # 示例配置:dsh-jenkins.json(工作区数组格式)、dsh-jenkins-map.json(集中 map) ├── tsdown.config.ts # tsdown 构建配置(node half + client bundle banner 包装) ├── tsconfig.json # solution:引用 tsconfig.host.json / tsconfig.client.json ├── cordis.patch.yml # 组合包 patch:按包名引用插件行(无路径) ├── package.json # dsh.bundle + dsh.client(web) manifest + peerDependencies ├── README.md # 英文文档(默认) ├── README.zh.md # 本文档 └── preview.md # 截图预览(引用 assets/preview/*.png)
工作区配置文件(dsh-jenkins.json / .js / .ts)
放在工作区根目录,数组形式,每个元素 = 一个发布目标(job + server +
environments 参数)。.json 直接解析;.js / .ts 经 node 求值
(module.exports 或 export default):
[
{
"job": "build-app",
"server": "http://uat.example.com",
"environments": { "BRANCH": "main", "DEPLOY": false }
},
{
"job": "build-app",
"server": "http://prod.example.com",
"environments": { "BRANCH": "release-1.0", "DEPLOY": true }
}
]
- 每个元素必填
job(Jenkins 任务路径,如build-app或folder/build-app)与
server(对应 设置 → Jenkins 里的服务器 name / id / 地址)。
environments(选填):该发布目标的参数键值(布尔值渲染为勾选框,其余为文本框)。- 这类文件现在是发现式配置:插件会把它读进 [项目配置](#项目配置dsh-jenkins-mapjson),
以工作区文件夹名作为项目名(只补缺失,不覆盖已有项目)。「发布」tab 直接选该项目即可,
服务器 / Job / 参数都会按当前环境自动带出。
项目配置(dsh-jenkins-map.json)
一份配置集中管理所有项目:项目名 → 发布目标数组。每个环境可选带一个
name 显示名(如 uat环境 / prod灰度 / prod环境),环境数量不限
(第 1 项为默认环境,通常写 UAT);留空时界面按下标回退显示 UAT / 生产 / 环境 N。
元素结构与工作区配置文件同构,可直接互相搬运:
{
"health-check-ui": [
{
"name": "uat环境",
"job": "system3_Front_docker3",
"server": "https://dev-jenkins-tx.whale-plus.com",
"environments": {
"project": "health-check-ui",
"branch": "uat5",
"NodeVersion": "v24.12.0",
"INSTALL_COMMAND_ACTIVE": "pnpm i --registry=https://repo.huaweicloud.com/repository/npm/",
"BUILD_COMMAND_ACTIVE": "pnpm build:uat"
}
},
{
"name": "prod灰度",
"job": "pro_system3_Front_docker3_gray",
"server": "https://jenkins-tx.whale-plus.com",
"environments": {
"project": "health-check-ui",
"branch": "release/gray",
"NodeVersion": "v24.12.0",
"BUILD_COMMAND_ACTIVE": "pnpm build:gray"
}
},
{
"name": "prod环境",
"job": "pro_system3_Front_docker3",
"server": "https://jenkins-tx.whale-plus.com",
"environments": {
"project": "health-check-ui",
"branch": "master5",
"NodeVersion": "v24.12.0",
"BUILD_COMMAND_ACTIVE": "pnpm build:prod"
}
}
]
}
- 存储位置:独立文件
$DSH_HOME/dsh-jenkins-map.json(裸 map,无包装层,
明文;缺失时按空 map 处理,损坏时备份 .bak 后按空处理)。旧版把项目配置写在
dsh-jenkins.json 的 projects 字段,首次启动会自动迁到新文件(只补缺失)。
- name(环境显示名):选填;写空串等于不写(不会落
"name": "")。
发布时它出现在【服务器】下拉标签与「本机记录」里,一眼看出这次发的是哪个环境。
- 环境数量不限:一个项目可以有任意多个发布目标(UAT / 灰度 / 生产 / 海外…),
数组顺序即显示顺序,第 1 项为默认环境。
- 发现式配置:打开「配置」/「发布」tab 时会扫描所有已打开工作区根目录的
dsh-jenkins.json/js/ts,以文件夹名作为项目名合并进 map ——
默认只补缺失、不覆盖已有项目;手改过的同名项目不会被冲掉。
需要按工作区里的最新配置更新时,在弹框底部勾选「覆盖同名项目」再点「重新发现」。
- 编辑:「配置」tab 一行的项目配置(
dsh-jenkins-map.json · N 个项目)点
「编辑 map」打开弹框:
- 表单:项目列表,每个环境一行 = 环境名(选填,placeholder 显示回退名)+ Job +
服务器 + 「N 项参数」(点开编辑参数键值对,值可指定文本·数字·布尔)+ 逐行删除;
「添加环境」不设上限,可增删项目 / 环境 / 参数;
- JSON:整个 map 的 JSON 直接编辑(可整段粘贴你自己的配置),「应用
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::22,最后更新 2026-09-16