Skip to main content
Glama
nixing178

Jenkins Console

by nixing178

Jenkins Console · DBX 插件

在 DBX 内管理 Jenkins 任务、构建、控制台日志、队列与节点。

  • 插件 ID:io.github.nixing178.jenkins

  • 当前版本:0.3.0(插件身份迁移到个人 ID io.github.nixing178.jenkins)

  • 形态:Go Sidecar + Vue3 静态工作台

  • 许可证:Apache-2.0

目录结构

manifest.json              插件身份、连接表单、贡献点
dbx-plugin.toml            打包配置(后端 + include)
index.html                 Vite 入口
src/                       Vue3 工作台源码
ui/                        构建产物(pnpm build 生成,打包时使用)
backend/
  main.go                  Sidecar 入口(JSON-RPC)
  internal/jenkins/        Jenkins 客户端与纯函数(TDD 覆盖)
  third_party/             内置 Go SDK(离线构建用)
assets/                    插件与连接图标
dist/                      .dbxp 打包产物

Related MCP server: MCP Jenkins

环境要求

工具

版本

Node.js

>= 22

pnpm

10.x

Go

1.22

DBX

>= 0.6.43(本机 0.6.47)

安装依赖

cd E:\DBX插件开发\Jenkins
pnpm install

pnpm 10 默认不执行依赖的 postinstall。若遇到 esbuild 的 EBUSY 校验失败,使用 pnpm install --ignore-scripts;esbuild 的 Windows 二进制来自 @esbuild/win32-x64,不受影响。

构建 UI

pnpm build        # vue-tsc 类型检查 + vite 单文件构建,输出到 ui/

测试(TDD)

测试按 TDD 红→绿推进,历史红/绿证据见 docs/test-evidence.md。

后端全量:

$env:PATH = "<Go 安装目录>\bin;" + $env:PATH
cd E:\DBX插件开发\Jenkins\backend
go test ./... -v

前端(Vitest):

cd E:\DBX插件开发\Jenkins
pnpm test

真实 Jenkins E2E

已在临时 Jenkins 2.586(Java 21,/jenkins 前缀,CSRF 开启)跑通:

  • 连接 / whoami / 任务 / 参数 / 构建 / 控制台 / 停止 / 队列 / 节点 / 概览

  • 任务按 Jenkins 原生 Views 分组(all/Builds/Ops 已实测)

  • Pipeline 任务支持阶段视图:构建 × stage 矩阵、平均耗时、失败/进行中/跳过着色

  • 无参与带参构建、只读拦截、MCP list_jobs

  • 完整步骤与实测输出:docs/e2e-jenkins.md

  • 脚本:scripts/e2e-jenkins.js

视图 / 任务管理

连接处于可写模式(关闭「只读模式」)时,可以在 DBX 内直接管理 Jenkins 配置:

操作

入口

说明

新建任务

任务列表顶部 +

自由风格 / Pipeline;在左侧当前文件夹内创建

编辑任务

任务详情右上「编辑」

表单改名称、描述、启用状态、Pipeline 脚本;高级页签可直接改 config.xml

删除任务

任务详情右上「删除」

需手动输入任务名确认;同时删除全部构建历史

新建视图

面包屑右侧 +

ListView;可勾选任务、填包含正则、递归子文件夹

编辑视图

面包屑右侧 ⋯

表单或原始 XML;非 ListView 仅支持 XML

删除视图

面包屑右侧 ⋯

需手动输入视图名确认;不会删除视图内任务

实现要点:

  • 编辑配置采用 XML 局部改写,只替换 description / disabled / script / jobNames 等目标节点,SCM、构建步骤、插件字段原样保留。

  • Pipeline 脚本与 config.xml 使用内嵌代码编辑器:Groovy / XML 语法高亮、行号、当前行高亮,Tab / Shift+Tab 缩进,右上「展开」切全屏编辑(Esc 先收起编辑器,再按才关闭窗口)。零外部依赖,产物只增约 1 KB。

  • 表单只提交发生变化的字段,未修改项不会被重写。

  • 所有写操作复用后端的只读守卫、CSRF crumb 刷新重试与权限错误映射。

  • Jenkins 返回 HTML 错误页时,提示会收敛为「HTML error page (HTTP xxx)」,不再把整页 HTML 塞给用户。

所需 Jenkins 权限:Item/Create、Item/Configure、Item/Delete、View/Create、View/Configure、View/Delete。

打包

$env:PATH = "<Go 安装目录>\bin;" + $env:PATH
cd E:\DBX插件开发\Jenkins
node scripts/check-version.mjs          # manifest / package.json / main.go / UA 版本必须一致
pnpm build
npx --yes @dbx-app/plugin-cli@0.1.9 package .
node scripts/verify-sidecar-identity.mjs dist\dbx-plugin-jenkins.exe   # 校验后端 identity

版本号必须同步:DBX 会比对 manifest.version 与 sidecar plugin/initialize 返回的版本, 不一致会直接拒绝启动(backend identity ... does not match manifest)。 版本号分散在 manifest.json、package.json、backend/main.go、backend/internal/jenkins/client.go 的 User-Agent 四处, 由 check-version.mjs 与 verify-sidecar-identity.mjs 双重把关。

产物:

dist/io.github.nixing178.jenkins-0.3.0-windows-x64.dbxp
dist/io.github.nixing178.jenkins-0.3.0-windows-x64.artifact.json

发布到 DBX 插件商店

商店目录在 t8y2/dbx-store,发布分两步:作者发候选包,维护者审核签名。

1. 发候选 Release(CI 自动构建)

ui/ 与 dist/ 不进 Git,候选包由 CI 从源码重建,因此本地 dist/ 的哈希不能用于上架。

git tag v0.3.0
git push origin main --tags
# GitHub → Releases → Draft a new release → 选 v0.3.0 → Publish

.github/workflows/plugin-release.yml 会复用官方 plugin-release-reusable.yml,自动产出并上传三个资产:

资产

说明

io.github.nixing178.jenkins-<version>-windows-x64.dbxp

未签名候选包

io.github.nixing178.jenkins-<version>-windows-x64.artifact.json

目标平台、sha256、size

release-candidates.json

汇总,供商店同步器读取

2. 提 catalog PR

向 t8y2/dbx-store:main 提交单个 PR,只加两个文件:

  • publishers/nixing178.json(首次上架)

  • candidates/io.github.nixing178.jenkins.json(sha256/size 必须取自 CI 产出的 .artifact.json)

维护者评论 /sign 后,签名工作流会回写 plugins/io.github.nixing178.jenkins.json 与 catalog/index.json,合并即上架。 签名私钥由商店维护,作者不接触。

已签名版本不可覆盖:任何改动都必须升 semver,并同步四处版本源(见上节)。

本地安装

  1. DBX → 插件中心 → 设置 → 打开「允许安装未签名开发包」。

  2. 插件中心 → 安装 → 从文件 → 选择 dist/io.github.nixing178.jenkins-0.3.0-windows-x64.dbxp。

  3. 新建连接,类型选 Jenkins,填写地址、端口、用户名与 API Token。

  4. 从 com.anjun.jenkins 旧版升级时:两者是不同插件,需先在插件中心卸载旧版,再安装新版。

若启动时报 Plugin 'io.github.nixing178.jenkins' initialization failed: backend identity 'x' does not match manifest 'y', 说明包内后端版本与 manifest 不一致(0.2.0 曾有此问题)。改用 0.3.0+ 的包,并先卸载旧版。 插件 ID 于 0.3.0 从 com.anjun.jenkins 迁移到 io.github.nixing178.jenkins,DBX 视为两个独立插件, 旧版的 Jenkins 连接不会自动迁移,需在新插件下重新创建。

连接配置

字段

说明

协议

HTTPS(默认)/ HTTP(内网)

IP / 域名 + 端口

Jenkins 控制器地址,默认 8080

上下文路径

部署在子路径时填写,如 /jenkins

用户名 + API Token

在 Jenkins「用户设置 → API Token」生成;留空表示匿名只读

只读模式

默认开启,后端会拒绝触发/停止/取消队列

跳过 TLS 证书校验

仅用于自签证书的内网实例

AI / MCP 工具

在「插件中心 → 已安装 → 内置 AI 工具」开启后,AI 可使用:

工具

读写

说明

list_jobs

只读

列出根目录/文件夹任务,支持名称过滤

get_job

只读

任务详情与参数定义

list_builds

只读

最近构建列表

get_build

只读

单次构建详情、变更集、产物

get_console_log

只读

增量控制台日志(用 nextStart 续读)

list_queue

只读

队列与阻塞原因

list_nodes

只读

节点状态与执行器

trigger_build

写

触发构建(可有参),宿主逐次确认

stop_build

写

停止构建(destructive)

cancel_queue_item

写

取消排队(destructive)

只读连接下,3 个写工具不会出现在工具列表中;后端仍会二次拦截。

当前进度

里程碑

状态

M0 脚手架 / manifest / 打包链路

已完成

M1 连接、认证、CSRF、错误映射

已完成(75 后端用例 + 6 前端用例全绿)

M2 任务、构建、控制台

已完成(102 后端用例 + 18 前端用例全绿,含 sidecar 冒烟)

M3 队列、节点、概览

已完成(111 后端用例全绿,M3 端点冒烟通过)

M4 MCP 工具面

已完成(120 后端用例全绿,10 工具冒烟通过)

M5 打包验收

E2E 已完成(Jenkins 2.586 全链路通过);待本机安装验收

M6 视图 / 任务 CRUD

已完成(84 jenkins + 45 rpc 用例;真实 Jenkins 2.586 建/改/删/重命名/只读拦截 E2E 通过)

任务列表已按 Jenkins 原生 Views 分组:顶部 Tab 切换视图,视图内分「文件夹 / 任务」两组。 Tab 溢出时左右箭头滚动,当前视图自动居中;打开视图自动选中首个任务;左栏宽 320px。 当前测试基线:129 后端用例 + 55 前端用例。

Pipeline 创建依赖 Jenkins 的 workflow-job / workflow-cps 插件;实例未安装时 Jenkins 返回 500,插件会给出去敏的 HTML 错误提示,不会创建半成品任务。

Jenkins Views 分组 Stage View

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Provides AI assistants with full access to Jenkins CI/CD systems, enabling querying, managing, and controlling Jenkins jobs, builds, nodes, and queues through natural language.
    22
    416 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI language models to securely interact with Jenkins, exposing tools for managing jobs, builds, nodes, queues, views, plugins, artifacts, and Groovy scripts with authentication and read-only controls.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to interact with Jenkins through secure, contextual tools for querying and managing jobs, builds, nodes, queues, views, plugins, artifacts, and Groovy scripts, with configurable authentication and read-only safety.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to securely inspect and manage Jenkins servers, providing tools for jobs, builds, nodes, queues, views, plugins, artifacts, and Groovy scripts through natural-language workflows.
    -