MovieMaker93/dsh-plugin-safe-upgrade ↗★ 0

dsh-plugin-safe-upgrade

提供配置历史记录、安全升级守护与自动回滚功能 适合需要保障 DSH 框架和插件升级稳定性、防止配置损坏的运维人员。

套件
dsh-plugin-safe-upgrade
相容性
待驗證
版本
0.2.0
授權
MIT
最近更新
2026年9月28日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:MovieMaker93/dsh-plugin-safe-upgrade

Configuration

Everything is auto-detected: the unit from the process cgroup, the install directory from the running dsh binary, the health URL from --host/--port, and the profiles from $DSH_HOME/profiles. To override, add a row to your profile's cordis.patch.yml. A patch replaces the whole config, so list every key you want to keep.

- id: safe-upgrade
  config:
    channel: latest              # dist-tag that /upgrade offers first
    failOnWarnings: false
    telegram:                    # optional; credentials are read at send time
      envFile: /etc/dsh/alerts.env
      tokenVar: TELEGRAM_BOT_TOKEN
      chatVar: TELEGRAM_CHAT_ID
KeyDefaultMeaning
unit / scopedetectedsystemd unit and system/user scope
installDirdetectedfolder whose node_modules holds @deepseek-ai/dsh
profilesallprofiles validated with --dump-config
healthUrlfrom --portany HTTP answer except 5xx counts as up (401 is normal)
healthTimeoutMs150000how long a new boot may take
bootTimeoutMs120000how long plugins may stay loading before the boot counts as unhealthy
idleWaitMs300000how long an upgrade or rollback waits for running turns before it gives up without stopping dsh
channellatestdist-tag offered first; tags behind it are hidden
checkIntervalHours6npm dist-tag check interval
keepPrev2previous install copies kept for rollback
keepGoodTags10good-* tags kept
snapshotstrueauto-commit config edits
failOnWarningsfalsetreat warnings as failures (dry runs, upgrades, manual rollbacks)
uiCheckautoauto: roll back on dsh's failure screen, warn if the check can't run; true: also roll back when it can't run; false: skip
chromiumdetectedpath to a Chromium/Chrome binary for the UI check
uiTimeoutMs45000how long the UI may take to show the composer
telegramoff{envFile?, tokenVar?, chatVar?}