From a740d563d75d4f1f184f23b4aba98e22f315f51e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 14 Jan 2026 00:07:50 +0000 Subject: [PATCH] chore: allow install smoke previous override --- docs/reference/RELEASING.md | 1 + scripts/docker/install-sh-smoke/run.sh | 16 +++++++++++++--- scripts/test-install-sh-docker.sh | 2 ++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/reference/RELEASING.md b/docs/reference/RELEASING.md index f5cec402b..71049890f 100644 --- a/docs/reference/RELEASING.md +++ b/docs/reference/RELEASING.md @@ -31,6 +31,7 @@ Use `pnpm` (Node 22+) from the repo root. Keep the working tree clean before tag - [ ] `pnpm run build` (last sanity check after tests) - [ ] `pnpm release:check` (verifies npm pack contents) - [ ] `pnpm test:install:smoke` (Docker install smoke test; required before release) + - If the immediate previous npm release is known broken, set `CLAWDBOT_INSTALL_SMOKE_PREVIOUS=` or `CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS=1` for the preinstall step. - [ ] (Optional) Installer E2E (Docker, runs `curl -fsSL https://clawd.bot/install.sh | bash`, onboards, then runs real tool calls): - `pnpm test:install:e2e:openai` (requires `OPENAI_API_KEY`) - `pnpm test:install:e2e:anthropic` (requires `ANTHROPIC_API_KEY`) diff --git a/scripts/docker/install-sh-smoke/run.sh b/scripts/docker/install-sh-smoke/run.sh index c523fc3d4..370ddae4b 100755 --- a/scripts/docker/install-sh-smoke/run.sh +++ b/scripts/docker/install-sh-smoke/run.sh @@ -2,10 +2,15 @@ set -euo pipefail INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}" +SMOKE_PREVIOUS_VERSION="${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}" +SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}" echo "==> Resolve npm versions" LATEST_VERSION="$(npm view clawdbot version)" -PREVIOUS_VERSION="$(node - <<'NODE' +if [[ -n "$SMOKE_PREVIOUS_VERSION" ]]; then + PREVIOUS_VERSION="$SMOKE_PREVIOUS_VERSION" +else + PREVIOUS_VERSION="$(node - <<'NODE' const { execSync } = require("node:child_process"); const versions = JSON.parse(execSync("npm view clawdbot versions --json", { encoding: "utf8" })); @@ -16,11 +21,16 @@ const previous = versions.length >= 2 ? versions[versions.length - 2] : versions process.stdout.write(previous); NODE )" +fi echo "latest=$LATEST_VERSION previous=$PREVIOUS_VERSION" -echo "==> Preinstall previous (forces installer upgrade path)" -npm install -g "clawdbot@${PREVIOUS_VERSION}" +if [[ "$SKIP_PREVIOUS" == "1" ]]; then + echo "==> Skip preinstall previous (CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS=1)" +else + echo "==> Preinstall previous (forces installer upgrade path)" + npm install -g "clawdbot@${PREVIOUS_VERSION}" +fi echo "==> Run official installer one-liner" curl -fsSL "$INSTALL_URL" | bash diff --git a/scripts/test-install-sh-docker.sh b/scripts/test-install-sh-docker.sh index efcfa5811..adf2989cd 100755 --- a/scripts/test-install-sh-docker.sh +++ b/scripts/test-install-sh-docker.sh @@ -16,6 +16,8 @@ docker build \ echo "==> Run installer smoke test (root): $INSTALL_URL" docker run --rm -t \ -e CLAWDBOT_INSTALL_URL="$INSTALL_URL" \ + -e CLAWDBOT_INSTALL_SMOKE_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}" \ + -e CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}" \ -e CLAWDBOT_NO_ONBOARD=1 \ -e DEBIAN_FRONTEND=noninteractive \ "$SMOKE_IMAGE"