From 4cee5a0c532638db8e69bd7bee7cefeece388084 Mon Sep 17 00:00:00 2001 From: host Date: Mon, 26 Oct 2026 04:41:01 +0800 Subject: [PATCH] Fix deploy/rollback to clean code dir before extract Overlay-only extract left files added by the newer version behind after a rollback (2026-10-26: after rolling back ops-batch, deploy/ new scripts were still present). Before every extract, delete app-dir contents except work/ (task worktrees), then extract; backup tarballs also exclude work/, so worktrees are preserved on both deploy and rollback. --- deploy/deploy.sh | 6 +++++- deploy/rollback.sh | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index fca2beb..164dab0 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -130,7 +130,10 @@ echo "已备份当前代码到:$BACKUP_FILE" ls -t "$BACKUP_DIR"/codex-app-server-*.tar.gz 2>/dev/null \ | tail -n +4 | xargs -r rm -f -# 2. 解包新代码并改属主 +# 2. 先清掉旧代码(保留 work/ 工作区,里面是任务 worktree),再解包新代码。 +# 只做覆盖式解包会留下新版新增的文件,回滚时旧版文件还在,造成“回滚不干净” +# (2026-10-26 实测:回滚后 deploy/ 新脚本仍残留)。 +find "$APP_DIR" -mindepth 1 -maxdepth 1 ! -name work -exec rm -rf {} + tar -xzf /tmp/codex-app-server-code.tar.gz -C "$APP_DIR" chown -R codexsvc:codexsvc "$APP_DIR" @@ -144,6 +147,7 @@ fi # 4. 失败:恢复备份并重启,再验一次 echo "新代码 health 未通过,开始回滚到备份:$BACKUP_FILE" systemctl stop codex-cloud-worker codex-cloud-server || true +find "$APP_DIR" -mindepth 1 -maxdepth 1 ! -name work -exec rm -rf {} + tar -xzf "$BACKUP_FILE" -C /opt chown -R codexsvc:codexsvc "$APP_DIR" systemctl start codex-cloud-server codex-cloud-worker diff --git a/deploy/rollback.sh b/deploy/rollback.sh index 2640159..8010539 100755 --- a/deploy/rollback.sh +++ b/deploy/rollback.sh @@ -67,6 +67,7 @@ if [ -z "$BACKUP_FILE" ]; then fi echo "将恢复备份包:$BACKUP_FILE" systemctl stop codex-cloud-worker codex-cloud-server || true +find "$APP_DIR" -mindepth 1 -maxdepth 1 ! -name work -exec rm -rf {} + tar -xzf "$BACKUP_FILE" -C /opt chown -R codexsvc:codexsvc "$APP_DIR" systemctl start codex-cloud-server codex-cloud-worker