From 98c681e033f99caaa5b9c2cf94f7ed82b2cbb787 Mon Sep 17 00:00:00 2001 From: Onur Date: Thu, 16 Apr 2026 23:16:48 +0200 Subject: [PATCH] CI: mount writable Docker cache homes (#67825) --- scripts/test-live-acp-bind-docker.sh | 18 ++++++++++++++--- scripts/test-live-cli-backend-docker.sh | 18 ++++++++++++++--- scripts/test-live-codex-harness-docker.sh | 18 ++++++++++++++--- scripts/test-live-gateway-models-docker.sh | 23 ++++++++++++++++++++++ scripts/test-live-models-docker.sh | 16 +++++++++++++++ 5 files changed, 84 insertions(+), 9 deletions(-) diff --git a/scripts/test-live-acp-bind-docker.sh b/scripts/test-live-acp-bind-docker.sh index 151e6db0035..2da32d8bbeb 100644 --- a/scripts/test-live-acp-bind-docker.sh +++ b/scripts/test-live-acp-bind-docker.sh @@ -48,8 +48,17 @@ elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then else CLI_TOOLS_DIR="$HOME/.cache/openclaw/docker-cli-tools" fi +if [[ -n "${OPENCLAW_DOCKER_CACHE_HOME_DIR:-}" ]]; then + CACHE_HOME_DIR="${OPENCLAW_DOCKER_CACHE_HOME_DIR}" +elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then + CACHE_HOME_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/openclaw-docker-cache.XXXXXX")" + TEMP_DIRS+=("$CACHE_HOME_DIR") +else + CACHE_HOME_DIR="$HOME/.cache/openclaw/docker-cache" +fi mkdir -p "$CLI_TOOLS_DIR" +mkdir -p "$CACHE_HOME_DIR" if [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then DOCKER_USER="$(id -u):$(id -g)" fi @@ -64,10 +73,12 @@ set -euo pipefail [ -f "$HOME/.profile" ] && [ -r "$HOME/.profile" ] && source "$HOME/.profile" || true export NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-$HOME/.npm-global}" export npm_config_prefix="$NPM_CONFIG_PREFIX" -export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$HOME/.npm-cache}" +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +export COREPACK_HOME="${COREPACK_HOME:-$XDG_CACHE_HOME/node/corepack}" +export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$XDG_CACHE_HOME/npm}" export npm_config_cache="$NPM_CONFIG_CACHE" -mkdir -p "$NPM_CONFIG_PREFIX" "$NPM_CONFIG_CACHE" -chmod 700 "$NPM_CONFIG_CACHE" || true +mkdir -p "$NPM_CONFIG_PREFIX" "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" +chmod 700 "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" || true export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" IFS=',' read -r -a auth_dirs <<<"${OPENCLAW_DOCKER_AUTH_DIRS_RESOLVED:-}" IFS=',' read -r -a auth_files <<<"${OPENCLAW_DOCKER_AUTH_FILES_RESOLVED:-}" @@ -247,6 +258,7 @@ for ACP_AGENT in "${ACP_AGENTS[@]}"; do -e OPENCLAW_LIVE_ACP_BIND=1 \ -e OPENCLAW_LIVE_ACP_BIND_AGENT="$ACP_AGENT" \ -e OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND="$AGENT_COMMAND" \ + -v "$CACHE_HOME_DIR":/home/node/.cache \ -v "$ROOT_DIR":/src:ro \ -v "$CONFIG_DIR":/home/node/.openclaw \ -v "$WORKSPACE_DIR":/home/node/.openclaw/workspace \ diff --git a/scripts/test-live-cli-backend-docker.sh b/scripts/test-live-cli-backend-docker.sh index 13741db2318..0593b2f6014 100644 --- a/scripts/test-live-cli-backend-docker.sh +++ b/scripts/test-live-cli-backend-docker.sh @@ -71,8 +71,17 @@ elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then else CLI_TOOLS_DIR="$HOME/.cache/openclaw/docker-cli-tools" fi +if [[ -n "${OPENCLAW_DOCKER_CACHE_HOME_DIR:-}" ]]; then + CACHE_HOME_DIR="${OPENCLAW_DOCKER_CACHE_HOME_DIR}" +elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then + CACHE_HOME_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/openclaw-docker-cache.XXXXXX")" + TEMP_DIRS+=("$CACHE_HOME_DIR") +else + CACHE_HOME_DIR="$HOME/.cache/openclaw/docker-cache" +fi mkdir -p "$CLI_TOOLS_DIR" +mkdir -p "$CACHE_HOME_DIR" if [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then DOCKER_USER="$(id -u):$(id -g)" fi @@ -185,10 +194,12 @@ set -euo pipefail [ -f "$HOME/.profile" ] && [ -r "$HOME/.profile" ] && source "$HOME/.profile" || true export NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-$HOME/.npm-global}" export npm_config_prefix="$NPM_CONFIG_PREFIX" -export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$HOME/.npm-cache}" +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +export COREPACK_HOME="${COREPACK_HOME:-$XDG_CACHE_HOME/node/corepack}" +export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$XDG_CACHE_HOME/npm}" export npm_config_cache="$NPM_CONFIG_CACHE" -mkdir -p "$NPM_CONFIG_PREFIX" "$NPM_CONFIG_CACHE" -chmod 700 "$NPM_CONFIG_CACHE" || true +mkdir -p "$NPM_CONFIG_PREFIX" "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" +chmod 700 "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" || true export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" IFS=',' read -r -a auth_dirs <<<"${OPENCLAW_DOCKER_AUTH_DIRS_RESOLVED:-}" IFS=',' read -r -a auth_files <<<"${OPENCLAW_DOCKER_AUTH_FILES_RESOLVED:-}" @@ -379,6 +390,7 @@ docker run --rm -t \ -e OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE="${OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE:-}" \ -e OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="${OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG:-}" \ -e OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="${OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE:-}" \ + -v "$CACHE_HOME_DIR":/home/node/.cache \ -v "$ROOT_DIR":/src:ro \ -v "$CONFIG_DIR":/home/node/.openclaw \ -v "$WORKSPACE_DIR":/home/node/.openclaw/workspace \ diff --git a/scripts/test-live-codex-harness-docker.sh b/scripts/test-live-codex-harness-docker.sh index 132c2779a8f..85c3b9ea9d2 100644 --- a/scripts/test-live-codex-harness-docker.sh +++ b/scripts/test-live-codex-harness-docker.sh @@ -26,8 +26,17 @@ elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then else CLI_TOOLS_DIR="$HOME/.cache/openclaw/docker-cli-tools" fi +if [[ -n "${OPENCLAW_DOCKER_CACHE_HOME_DIR:-}" ]]; then + CACHE_HOME_DIR="${OPENCLAW_DOCKER_CACHE_HOME_DIR}" +elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then + CACHE_HOME_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/openclaw-docker-cache.XXXXXX")" + TEMP_DIRS+=("$CACHE_HOME_DIR") +else + CACHE_HOME_DIR="$HOME/.cache/openclaw/docker-cache" +fi mkdir -p "$CLI_TOOLS_DIR" +mkdir -p "$CACHE_HOME_DIR" if [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then DOCKER_USER="$(id -u):$(id -g)" fi @@ -63,10 +72,12 @@ set -euo pipefail [ -f "$HOME/.profile" ] && [ -r "$HOME/.profile" ] && source "$HOME/.profile" || true export NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-$HOME/.npm-global}" export npm_config_prefix="$NPM_CONFIG_PREFIX" -export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$HOME/.npm-cache}" +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +export COREPACK_HOME="${COREPACK_HOME:-$XDG_CACHE_HOME/node/corepack}" +export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$XDG_CACHE_HOME/npm}" export npm_config_cache="$NPM_CONFIG_CACHE" -mkdir -p "$NPM_CONFIG_PREFIX" "$NPM_CONFIG_CACHE" -chmod 700 "$NPM_CONFIG_CACHE" || true +mkdir -p "$NPM_CONFIG_PREFIX" "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" +chmod 700 "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" || true export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" IFS=',' read -r -a auth_files <<<"${OPENCLAW_DOCKER_AUTH_FILES_RESOLVED:-}" if ((${#auth_files[@]} > 0)); then @@ -125,6 +136,7 @@ docker run --rm -t \ -e OPENCLAW_LIVE_CODEX_HARNESS_MODEL="${OPENCLAW_LIVE_CODEX_HARNESS_MODEL:-codex/gpt-5.4}" \ -e OPENCLAW_LIVE_TEST=1 \ -e OPENCLAW_VITEST_FS_MODULE_CACHE=0 \ + -v "$CACHE_HOME_DIR":/home/node/.cache \ -v "$ROOT_DIR":/src:ro \ -v "$CONFIG_DIR":/home/node/.openclaw \ -v "$WORKSPACE_DIR":/home/node/.openclaw/workspace \ diff --git a/scripts/test-live-gateway-models-docker.sh b/scripts/test-live-gateway-models-docker.sh index 09339f93f4a..8ff00c2b86c 100755 --- a/scripts/test-live-gateway-models-docker.sh +++ b/scripts/test-live-gateway-models-docker.sh @@ -9,6 +9,22 @@ CONFIG_DIR="${OPENCLAW_CONFIG_DIR:-$HOME/.openclaw}" WORKSPACE_DIR="${OPENCLAW_WORKSPACE_DIR:-$HOME/.openclaw/workspace}" PROFILE_FILE="${OPENCLAW_PROFILE_FILE:-$HOME/.profile}" DOCKER_USER="${OPENCLAW_DOCKER_USER:-node}" +TEMP_DIRS=() +cleanup_temp_dirs() { + if ((${#TEMP_DIRS[@]} > 0)); then + rm -rf "${TEMP_DIRS[@]}" + fi +} +trap cleanup_temp_dirs EXIT +if [[ -n "${OPENCLAW_DOCKER_CACHE_HOME_DIR:-}" ]]; then + CACHE_HOME_DIR="${OPENCLAW_DOCKER_CACHE_HOME_DIR}" +elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then + CACHE_HOME_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/openclaw-docker-cache.XXXXXX")" + TEMP_DIRS+=("$CACHE_HOME_DIR") +else + CACHE_HOME_DIR="$HOME/.cache/openclaw/docker-cache" +fi +mkdir -p "$CACHE_HOME_DIR" if [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then DOCKER_USER="$(id -u):$(id -g)" fi @@ -78,6 +94,12 @@ fi read -r -d '' LIVE_TEST_CMD <<'EOF' || true set -euo pipefail [ -f "$HOME/.profile" ] && [ -r "$HOME/.profile" ] && source "$HOME/.profile" || true +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +export COREPACK_HOME="${COREPACK_HOME:-$XDG_CACHE_HOME/node/corepack}" +export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$XDG_CACHE_HOME/npm}" +export npm_config_cache="$NPM_CONFIG_CACHE" +mkdir -p "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" +chmod 700 "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" || true IFS=',' read -r -a auth_dirs <<<"${OPENCLAW_DOCKER_AUTH_DIRS_RESOLVED:-}" IFS=',' read -r -a auth_files <<<"${OPENCLAW_DOCKER_AUTH_FILES_RESOLVED:-}" if ((${#auth_dirs[@]} > 0)); then @@ -137,6 +159,7 @@ docker run --rm -t \ -e OPENCLAW_LIVE_GATEWAY_MAX_MODELS="${OPENCLAW_LIVE_GATEWAY_MAX_MODELS:-8}" \ -e OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS="${OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS:-45000}" \ -e OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS="${OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS:-90000}" \ + -v "$CACHE_HOME_DIR":/home/node/.cache \ -v "$ROOT_DIR":/src:ro \ -v "$CONFIG_DIR":/home/node/.openclaw \ -v "$WORKSPACE_DIR":/home/node/.openclaw/workspace \ diff --git a/scripts/test-live-models-docker.sh b/scripts/test-live-models-docker.sh index 47728f643df..dd73cfb5c55 100755 --- a/scripts/test-live-models-docker.sh +++ b/scripts/test-live-models-docker.sh @@ -36,6 +36,15 @@ else CONFIG_DIR="${OPENCLAW_CONFIG_DIR:-$HOME/.openclaw}" WORKSPACE_DIR="${OPENCLAW_WORKSPACE_DIR:-$HOME/.openclaw/workspace}" fi +if [[ -n "${OPENCLAW_DOCKER_CACHE_HOME_DIR:-}" ]]; then + CACHE_HOME_DIR="${OPENCLAW_DOCKER_CACHE_HOME_DIR}" +elif [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then + CACHE_HOME_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/openclaw-docker-cache.XXXXXX")" + TEMP_DIRS+=("$CACHE_HOME_DIR") +else + CACHE_HOME_DIR="$HOME/.cache/openclaw/docker-cache" +fi +mkdir -p "$CACHE_HOME_DIR" if [[ "${CI:-}" == "true" || "${GITHUB_ACTIONS:-}" == "true" ]]; then DOCKER_USER="$(id -u):$(id -g)" fi @@ -115,6 +124,12 @@ fi read -r -d '' LIVE_TEST_CMD <<'EOF' || true set -euo pipefail [ -f "$HOME/.profile" ] && [ -r "$HOME/.profile" ] && source "$HOME/.profile" || true +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +export COREPACK_HOME="${COREPACK_HOME:-$XDG_CACHE_HOME/node/corepack}" +export NPM_CONFIG_CACHE="${NPM_CONFIG_CACHE:-$XDG_CACHE_HOME/npm}" +export npm_config_cache="$NPM_CONFIG_CACHE" +mkdir -p "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" +chmod 700 "$XDG_CACHE_HOME" "$COREPACK_HOME" "$NPM_CONFIG_CACHE" || true IFS=',' read -r -a auth_dirs <<<"${OPENCLAW_DOCKER_AUTH_DIRS_RESOLVED:-}" IFS=',' read -r -a auth_files <<<"${OPENCLAW_DOCKER_AUTH_FILES_RESOLVED:-}" if ((${#auth_dirs[@]} > 0)); then @@ -177,6 +192,7 @@ docker run --rm -t \ -e OPENCLAW_LIVE_GATEWAY_MODELS="${OPENCLAW_LIVE_GATEWAY_MODELS:-}" \ -e OPENCLAW_LIVE_GATEWAY_PROVIDERS="${OPENCLAW_LIVE_GATEWAY_PROVIDERS:-}" \ -e OPENCLAW_LIVE_GATEWAY_MAX_MODELS="${OPENCLAW_LIVE_GATEWAY_MAX_MODELS:-}" \ + -v "$CACHE_HOME_DIR":/home/node/.cache \ -v "$ROOT_DIR":/src:ro \ -v "$CONFIG_DIR":/home/node/.openclaw \ -v "$WORKSPACE_DIR":/home/node/.openclaw/workspace \