DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

EIGHTfs /

EIGHTfs/dsh-test-sync-plugin

Verified

DSH 测试环境插件同步工具

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@abf9c93a

🔀 dsh-test-sync

蓝绿部署同步插件:主实例安装插件时自动同步到测试实例并重启

架构图

✨ 为什么需要它?

在 DSH 双实例蓝绿部署场景下,每次在主实例(3081)安装新插件都需要手动同步到测试实例(3084),流程繁琐且容易遗漏。本插件实现了:

痛点 解决方案
手动同步 patch 文件易漏插件 自动监听主实例 cordis.patch.yml,检测到变更立即同步
测试实例重启需要手动操作 同步完成后自动触发测试实例重启,无需人工介入
多次频繁变更可能冲突 防抖机制(默认 3s),批量变更合并为一次同步

📦 安装方法

第一步:源码放入 node_modules_local

# 复制插件源码到主实例的 node_modules_local
cp -r /vol1/@appshare/DeepSeekHarness/workspace/dsh-test-sync-plugin \
      /vol1/@appshare/DeepSeekHarness/profiles/web/node_modules_local/dsh-test-sync-plugin

第二步:添加依赖声明

编辑 /vol1/@appshare/DeepSeekHarness/profiles/web/package.json,在 dependencies 中添加:

"@deepseek-ai/dsh-test-sync": "file:./node_modules_local/dsh-test-sync-plugin"

第三步:注册到 cordis.patch.yml

编辑 /vol1/@appshare/DeepSeekHarness/.dsh/profiles/web/cordis.patch.yml,添加:

- id: test-sync
  name: '@deepseek-ai/dsh-test-sync'
  config:
    testHome: '/vol1/@appshare/DeepSeekHarness/workspace/dsh-test-home'
    proxyPort: 3084
    enabled: true
    debounceMs: 3000

第四步:重启主实例

# 官方重启(推荐,会话不中断)
cd /vol1/@appcenter/deepseek-harness
./dsh-restart.sh

🎛️ 配置说明

配置项 类型 默认值 说明
testHome string .../dsh-test-home 测试实例的 DSH_HOME 路径
proxyPort number 3084 测试实例反代端口(健康检查用)
enabled boolean true 是否启用自动同步
debounceMs number 3000 同步防抖延迟(毫秒)

🔌 API 说明

所有 API 通过主实例 3081 端口访问。

查询同步状态

curl -s http://10.10.10.4:3081/api/test-sync/status
{
  "enabled": true,
  "testHome": "/vol1/@appshare/DeepSeekHarness/workspace/dsh-test-home",
  "proxyPort": 3084,
  "lastSyncHash": "a1b2c3d4-e1f2-4a5b-8c9d-0e1f2a3b4c5d",
  "health": {
    "healthy": true,
    "status": 200
  }
}

手动触发同步

curl -s -X POST http://10.10.10.4:3081/api/test-sync/sync
{
  "success": true,
  "message": "同步完成"
}

启用同步

curl -s -X POST http://10.10.10.4:3081/api/test-sync/enable
{ "enabled": true }

禁用同步

curl -s -X POST http://10.10.10.4:3081/api/test-sync/disable
{ "enabled": false }

🧪 验证方法

验证插件加载成功

# 查看主实例日志,确认插件启动
grep "test-sync" /vol1/@appshare/DeepSeekHarness/.dsh/logs/main.log

预期输出:

test-sync: 启动蓝绿同步插件
test-sync: 测试实例 DSH_HOME=/vol1/@appshare/DeepSeekHarness/workspace/dsh-test-home
test-sync: 测试实例反代端口=3084
test-sync: API 路由已注册 (/api/test-sync/*)
test-sync: 开始监听 .../dsh-test-home/profiles/web/cordis.patch.yml

验证同步功能

# 1. 在主实例安装一个新插件(通过 GUI 或手动修改 cordis.patch.yml)
# 2. 等待 3 秒(防抖时间)
# 3. 检查测试实例是否同步

# 查询同步状态
curl -s http://10.10.10.4:3081/api/test-sync/status

# 查看测试实例 patch 文件
cat /vol1/@appshare/DeepSeekHarness/workspace/dsh-test-home/profiles/web/cordis.patch.yml

验证健康检查

# 测试实例是否存活
curl -s -o /dev/null -w "%{http_code}" http://10.10.10.4:3084/

预期输出:200

⚠️ 已知坑

问题 原因 解决方法
测试实例未启动时同步失败 health check 超时 先手动启动测试实例再同步
手动编辑测试实例 patch 后冲突 直接覆盖而非合并 同步前备份,或只通过 GUI 操作主实例
频繁变更导致多次重启 debounceMs 设置过小 增大 debounceMs 到 5000+

📋 版本记录

版本 日期 说明
1.0.0 2026-01-01 初始版本:监听 patch 变更、自动同步、重启测试实例

工作原理:插件通过 chokidar 监听主实例 cordis.patch.yml 文件变更,检测到 bundles 列表变化后,自动计算 hash 对比、提取新增插件名称、写入测试实例 patch 文件,并触发测试实例重启。整个过程无需人工干预,实现蓝绿部署的无缝同步。

—/ 5

No ratings yet

Verified DSH bundle

Commit abf9c93a644e

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout