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。

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

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

小夜