From 0651e5dc97ddd930ab586024ff12b2329b347bec Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 24 Apr 2026 20:10:21 +0100 Subject: [PATCH] fix: restore reliable live Docker staging --- scripts/lib/live-docker-stage.sh | 18 ++------------ scripts/test-docker-all.mjs | 41 ++++++++------------------------ 2 files changed, 12 insertions(+), 47 deletions(-) diff --git a/scripts/lib/live-docker-stage.sh b/scripts/lib/live-docker-stage.sh index 73ab22c66dd..b79791f4e39 100644 --- a/scripts/lib/live-docker-stage.sh +++ b/scripts/lib/live-docker-stage.sh @@ -5,21 +5,7 @@ openclaw_live_stage_source_tree() { local stage_mode="${OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE:-copy}" if [ "$stage_mode" = "symlink" ]; then - mkdir -p "$dest_dir" - local entry - while IFS= read -r -d "" entry; do - entry="${entry#./}" - case "$entry" in - .git | node_modules | dist | .pnpm-store | .tmp | .tmp-precommit-venv | .worktrees | __openclaw_vitest__ | relay.sock) - continue - ;; - *.sock) - continue - ;; - esac - ln -s "/src/$entry" "$dest_dir/$entry" - done < <(cd /src && find . -mindepth 1 -maxdepth 1 -print0) - return 0 + echo "OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink is disabled; using copy staging." >&2 fi set +e @@ -71,7 +57,7 @@ openclaw_live_stage_node_modules() { local target_dir="$dest_dir/node_modules" mkdir -p "$target_dir" - find /app/node_modules -mindepth 1 -maxdepth 1 -exec ln -s {} "$target_dir" \; + cp -aRs /app/node_modules/. "$target_dir" rm -rf "$target_dir/.vite-temp" mkdir -p "$target_dir/.vite-temp" } diff --git a/scripts/test-docker-all.mjs b/scripts/test-docker-all.mjs index d53d810da48..07fd49a21a9 100644 --- a/scripts/test-docker-all.mjs +++ b/scripts/test-docker-all.mjs @@ -43,21 +43,15 @@ const bundledScenarioLanes = [ ]; const lanes = [ - [ - "live-models", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-models", - ], - [ - "live-gateway", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-gateway", - ], + ["live-models", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-models"], + ["live-gateway", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-gateway"], [ "live-cli-backend-claude", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-cli-backend:claude", + "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-cli-backend:claude", ], [ "live-cli-backend-gemini", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-cli-backend:gemini", + "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-cli-backend:gemini", ], ["openwebui", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openwebui"], ["onboard", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:onboard"], @@ -83,30 +77,15 @@ const exclusiveLanes = [ "openai-web-search-minimal", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal", ], - [ - "live-codex-harness", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-codex-harness", - ], - [ - "live-codex-bind", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-codex-bind", - ], + ["live-codex-harness", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-codex-harness"], + ["live-codex-bind", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-codex-bind"], [ "live-cli-backend-codex", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-cli-backend:codex", - ], - [ - "live-acp-bind-claude", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-acp-bind:claude", - ], - [ - "live-acp-bind-codex", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-acp-bind:codex", - ], - [ - "live-acp-bind-gemini", - "OPENCLAW_SKIP_DOCKER_BUILD=1 OPENCLAW_LIVE_DOCKER_SOURCE_STAGE_MODE=symlink pnpm test:docker:live-acp-bind:gemini", + "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-cli-backend:codex", ], + ["live-acp-bind-claude", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-acp-bind:claude"], + ["live-acp-bind-codex", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-acp-bind:codex"], + ["live-acp-bind-gemini", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-acp-bind:gemini"], ]; const tailLanes = exclusiveLanes;