ci: share npm cache in install smoke

This commit is contained in:
Peter Steinberger
2026-04-23 20:57:14 +01:00
parent f02fcba21f
commit 956350bb9c
3 changed files with 31 additions and 0 deletions

View File

@@ -166,12 +166,18 @@ BASELINE_TAG_URL=""
FRESH_TAG_URL=""
UPDATE_TAG_URL=""
UPDATE_DOCKER_HOST_ARGS=()
NPM_CACHE_DIR="${OPENCLAW_INSTALL_SMOKE_NPM_CACHE_DIR:-}"
NPM_CACHE_OWNED=0
NPM_CACHE_DOCKER_ARGS=()
cleanup() {
if [[ -n "$UPDATE_SERVER_PID" ]]; then
kill "$UPDATE_SERVER_PID" >/dev/null 2>&1 || true
wait "$UPDATE_SERVER_PID" >/dev/null 2>&1 || true
fi
if [[ "$NPM_CACHE_OWNED" == "1" && -n "$NPM_CACHE_DIR" ]]; then
rm -rf "$NPM_CACHE_DIR"
fi
rm -rf "$LATEST_DIR" "$UPDATE_DIR"
}
@@ -288,6 +294,20 @@ prepare_update_host_access() {
fi
}
prepare_npm_cache() {
if [[ -z "$NPM_CACHE_DIR" ]]; then
NPM_CACHE_DIR="$(mktemp -d)"
NPM_CACHE_OWNED=1
fi
mkdir -p "$NPM_CACHE_DIR"
chmod 0777 "$NPM_CACHE_DIR"
NPM_CACHE_DOCKER_ARGS=(
-v "${NPM_CACHE_DIR}:/npm-cache"
-e npm_config_cache=/npm-cache
-e NPM_CONFIG_CACHE=/npm-cache
)
}
start_update_server() {
if [[ -z "$UPDATE_PORT" ]]; then
UPDATE_PORT="$(allocate_host_port)"
@@ -326,12 +346,14 @@ if [[ "$SKIP_UPDATE" == "1" ]]; then
else
prepare_update_tarball
prepare_update_host_access
prepare_npm_cache
start_update_server
echo "==> Run installer smoke test (root): $FRESH_TAG_URL"
docker run --rm -t \
--platform "$SMOKE_PLATFORM" \
${UPDATE_DOCKER_HOST_ARGS[@]+"${UPDATE_DOCKER_HOST_ARGS[@]}"} \
"${NPM_CACHE_DOCKER_ARGS[@]}" \
-v "${LATEST_DIR}:/out" \
-e OPENCLAW_INSTALL_URL="$INSTALL_URL" \
-e OPENCLAW_INSTALL_PACKAGE="$PACKAGE_NAME" \
@@ -353,6 +375,7 @@ else
docker run --rm -t \
--platform "$SMOKE_PLATFORM" \
${UPDATE_DOCKER_HOST_ARGS[@]+"${UPDATE_DOCKER_HOST_ARGS[@]}"} \
"${NPM_CACHE_DOCKER_ARGS[@]}" \
-e OPENCLAW_INSTALL_PACKAGE="$PACKAGE_NAME" \
-e OPENCLAW_INSTALL_SMOKE_MODE=update \
-e OPENCLAW_INSTALL_UPDATE_BASELINE="$UPDATE_BASELINE_VERSION" \
@@ -371,6 +394,7 @@ else
docker run --rm -t \
--platform "$SMOKE_PLATFORM" \
${UPDATE_DOCKER_HOST_ARGS[@]+"${UPDATE_DOCKER_HOST_ARGS[@]}"} \
"${NPM_CACHE_DOCKER_ARGS[@]}" \
-e OPENCLAW_INSTALL_PACKAGE="$PACKAGE_NAME" \
-e OPENCLAW_INSTALL_SMOKE_MODE=npm-global \
-e OPENCLAW_INSTALL_UPDATE_BASELINE="$UPDATE_BASELINE_VERSION" \
@@ -389,6 +413,7 @@ LATEST_VERSION="${LATEST_VERSION:-}"
if [[ "$SKIP_NONROOT" == "1" ]]; then
echo "==> Skip non-root installer smoke (OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1)"
else
prepare_npm_cache
if [[ "$SKIP_NONROOT_IMAGE_BUILD" == "1" ]]; then
echo "==> Reuse prebuilt non-root image: $NONROOT_IMAGE"
else
@@ -403,6 +428,7 @@ else
echo "==> Run installer non-root test: $INSTALL_URL"
docker run --rm -t \
--platform "$NONROOT_PLATFORM" \
"${NPM_CACHE_DOCKER_ARGS[@]}" \
-e OPENCLAW_INSTALL_URL="$INSTALL_URL" \
-e OPENCLAW_INSTALL_PACKAGE="$PACKAGE_NAME" \
-e OPENCLAW_INSTALL_METHOD=npm \
@@ -427,6 +453,7 @@ echo "==> Run CLI installer non-root test (same image)"
docker run --rm -t \
--platform "$NONROOT_PLATFORM" \
--entrypoint /bin/bash \
"${NPM_CACHE_DOCKER_ARGS[@]}" \
-e OPENCLAW_INSTALL_URL="$INSTALL_URL" \
-e OPENCLAW_INSTALL_CLI_URL="$CLI_INSTALL_URL" \
-e OPENCLAW_NO_ONBOARD=1 \