Skip to content

Commit 7b82901

Browse files
committed
ci(crabbox): keep hydrated modules under node_modules
1 parent 932034f commit 7b82901

2 files changed

Lines changed: 20 additions & 20 deletions

File tree

.github/workflows/crabbox-hydrate.yml

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ permissions:
3232
env:
3333
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
3434
PNPM_CONFIG_CHILD_CONCURRENCY: "1"
35-
PNPM_CONFIG_MODULES_DIR: "/var/tmp/openclaw-pnpm-node-modules"
35+
PNPM_CONFIG_MODULES_DIR: "/var/tmp/openclaw-pnpm/node_modules"
3636
PNPM_CONFIG_NETWORK_CONCURRENCY: "1"
37-
PNPM_CONFIG_STORE_DIR: "/var/tmp/openclaw-pnpm-store"
37+
PNPM_CONFIG_STORE_DIR: "/var/tmp/openclaw-pnpm/store"
3838
PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN: "false"
39-
PNPM_CONFIG_VIRTUAL_STORE_DIR: "/var/tmp/openclaw-pnpm-virtual-store"
39+
PNPM_CONFIG_VIRTUAL_STORE_DIR: "/var/tmp/openclaw-pnpm/virtual-store"
4040

4141
jobs:
4242
hydrate:
@@ -120,18 +120,16 @@ jobs:
120120
append_pnpm_option_arg PNPM_CONFIG_MODULES_DIR modules-dir
121121
append_pnpm_option_arg PNPM_CONFIG_NETWORK_CONCURRENCY network-concurrency
122122
append_pnpm_option_arg PNPM_CONFIG_VIRTUAL_STORE_DIR virtual-store-dir
123-
reset_crabbox_pnpm_path() {
124-
local path="$1"
125-
if [ -z "$path" ]; then
126-
return
123+
reset_crabbox_pnpm_root() {
124+
local root="/var/tmp/openclaw-pnpm"
125+
rm -rf -- "$root"
126+
mkdir -p "$root"
127+
if [ -L "$root" ] || [ ! -d "$root" ] || [ ! -O "$root" ]; then
128+
echo "::error::Refusing unsafe pnpm cache root: $root"
129+
exit 1
127130
fi
128-
case "$path" in
129-
/var/tmp/openclaw-pnpm-*) rm -rf "$path" ;;
130-
esac
131131
}
132-
reset_crabbox_pnpm_path "${PNPM_CONFIG_MODULES_DIR:-}"
133-
reset_crabbox_pnpm_path "${PNPM_CONFIG_STORE_DIR:-}"
134-
reset_crabbox_pnpm_path "${PNPM_CONFIG_VIRTUAL_STORE_DIR:-}"
132+
reset_crabbox_pnpm_root
135133
if [ -L node_modules ] && [ "$(readlink node_modules)" = "${PNPM_CONFIG_MODULES_DIR:-}" ]; then
136134
rm -f node_modules
137135
fi
@@ -372,9 +370,10 @@ jobs:
372370
$env:XDG_CACHE_HOME = Join-Path $cacheRoot "cache"
373371
$env:COREPACK_HOME = Join-Path $env:XDG_CACHE_HOME "corepack"
374372
$env:PNPM_HOME = Join-Path $cacheRoot "pnpm-home"
375-
$env:PNPM_CONFIG_STORE_DIR = Join-Path $cacheRoot "openclaw-pnpm-store"
376-
$env:PNPM_CONFIG_MODULES_DIR = Join-Path $cacheRoot "openclaw-pnpm-node-modules"
377-
$env:PNPM_CONFIG_VIRTUAL_STORE_DIR = Join-Path $env:PNPM_CONFIG_MODULES_DIR ".pnpm"
373+
$pnpmCacheRoot = Join-Path $cacheRoot "openclaw-pnpm"
374+
$env:PNPM_CONFIG_STORE_DIR = Join-Path $pnpmCacheRoot "store"
375+
$env:PNPM_CONFIG_MODULES_DIR = Join-Path $pnpmCacheRoot "node_modules"
376+
$env:PNPM_CONFIG_VIRTUAL_STORE_DIR = Join-Path $pnpmCacheRoot "virtual-store"
378377
$env:PNPM_CONFIG_CHILD_CONCURRENCY = "4"
379378
$env:PNPM_CONFIG_NETWORK_CONCURRENCY = "8"
380379
$env:PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN = "false"

test/scripts/package-acceptance-workflow.test.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,9 @@ describe("package acceptance workflow", () => {
141141
expect(hydratePnpm.if).toBeUndefined();
142142
expect(hydratePnpm.run).toContain('corepack enable --install-directory "$PNPM_HOME"');
143143
expect(hydratePnpm.run).toContain("COREPACK_HOME");
144-
expect(hydratePnpm.run).toContain("reset_crabbox_pnpm_path");
145-
expect(hydratePnpm.run).toContain("/var/tmp/openclaw-pnpm-*) rm -rf");
144+
expect(hydratePnpm.run).toContain("reset_crabbox_pnpm_root");
145+
expect(hydratePnpm.run).toContain('rm -rf -- "$root"');
146+
expect(hydratePnpm.run).toContain("Refusing unsafe pnpm cache root");
146147
expect(hydratePnpm.run).toContain(
147148
'[ "$(readlink node_modules)" = "${PNPM_CONFIG_MODULES_DIR:-}" ]',
148149
);
@@ -167,10 +168,10 @@ describe("package acceptance workflow", () => {
167168
const hydrateWindowsPnpm = workflowStep(hydrateWindowsDaemon, "Setup pnpm and dependencies");
168169
expect(hydrateWindowsPnpm.shell).toBe("powershell");
169170
expect(hydrateWindowsPnpm.run).toContain(
170-
'$env:PNPM_CONFIG_MODULES_DIR = Join-Path $cacheRoot "openclaw-pnpm-node-modules"',
171+
'$env:PNPM_CONFIG_MODULES_DIR = Join-Path $pnpmCacheRoot "node_modules"',
171172
);
172173
expect(hydrateWindowsPnpm.run).toContain(
173-
'$env:PNPM_CONFIG_VIRTUAL_STORE_DIR = Join-Path $env:PNPM_CONFIG_MODULES_DIR ".pnpm"',
174+
'$env:PNPM_CONFIG_VIRTUAL_STORE_DIR = Join-Path $pnpmCacheRoot "virtual-store"',
174175
);
175176
expect(hydrateWindowsPnpm.run).not.toContain("PNPM_CONFIG_PACKAGE_IMPORT_METHOD");
176177
expect(hydrateWindowsPnpm.run).toContain("--config.side-effects-cache=false");

0 commit comments

Comments
 (0)