dsh-jenkins

toolsinstall failsnpmMIT

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.

下载量 / Downloads
1,505
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-jenkins

Sandbox test results

StageResult
1 install✗
2 list—
3 mount—
4 boot—
First error
dsh: initialized profile web at /home/node/.dsh/profiles/web

Four 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

Links

GitHub · Homepage · npm

Same category