前言¶
用 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。