低调学安全

一键升级来了!CyberStrikeAI 新增“一键升级脚本”

最近很多伙伴反复提到同一句话:

“更新太麻烦了,能不能来个一键升级?”

Image
CyberStrikeAI 已新增“一键升级脚本”,从此告别“每次更新都要手动拉代码、处理配置、担心误覆盖”的折腾。 只需要在项目目录里执行脚本,一次完成升级相关流程。

它解决了什么?

升级脚本的设计目标是「安全、可控、尽量少出错」:

  • 升级前先备份:把 config.yaml、data/(以及可选目录)打包备份到 .upgrade-backup/
  • 自动拉取版本:从 GitHub Release 拉取指定版本(不传版本号则默认最新 Release)
  • 同步覆盖代码:使用 rsync --delete 同步升级代码,确保文件状态尽量匹配目标版本
  • 升级完成后启动:脚本会在末尾重新执行 run.sh 来启动服务
Image

默认保留哪些内容?

为了最大程度减少升级风险,默认会保留:

  • config.yaml
  • data/
  • venv/(Python 依赖环境)

如果你希望“升级更彻底”,可以选择不保留 venv/(升级后会重新安装 Python 依赖)。


常用参数(按需选择)

  • ./upgrade.sh
    使用最新 Release 升级
  • ./upgrade.sh --tag vX.Y.Z
    升级到指定版本
  • ./upgrade.sh --preserve-custom
    保留并备份 roles/、skills/、tools/(可能会覆盖上游更新,请谨慎使用)
  • ./upgrade.sh --no-venv
    不保留 venv/,升级后会重新安装 Python 依赖
  • ./upgrade.sh --no-stop
    不尝试停止正在运行的服务
  • ./upgrade.sh --force-stop
    找不到当前目录下的进程时,也会尝试停止匹配的 cyberstrike-ai 进程(谨慎使用)
  • ./upgrade.sh --yes
    非交互模式,不弹出确认提示

一键升级怎么用?(示例)

在项目目录执行:

chmod +x upgrade.sh
./upgrade.sh --yes

升级到指定版本(例如 v1.3.28):

./upgrade.sh --tag v1.3.28 --yes

如果你做过自定义扩展,需要保留自定义目录:

./upgrade.sh --preserve-custom --yes

小提醒

  • 第一次使用建议先手动确认一次(不带 --yes),脚本会提示你“将保留/不保留哪些目录”
  • --preserve-custom 可能会让你自定义的内容覆盖上游更新,建议在发布新版本时评估一下兼容性

结尾

更新变简单了,但安全依然重要。希望这个“一键升级脚本”能真正减轻你的运维成本,让你把时间用在更高价值的安全测试与自动化编排上。