From 48ddb1cc81db5b4c3dc995f0772ef11baf0d49b9 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 21 Feb 2026 20:39:34 +0100 Subject: [PATCH] fix(ci): stabilize install smoke in docker --- scripts/docker/install-sh-nonroot/run.sh | 19 ++++++++++++++++-- scripts/docker/install-sh-smoke/run.sh | 25 +++++++++++++++++++++--- scripts/test-install-sh-docker.sh | 3 +++ 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/scripts/docker/install-sh-nonroot/run.sh b/scripts/docker/install-sh-nonroot/run.sh index 93da907b3b8..e7a12cac297 100644 --- a/scripts/docker/install-sh-nonroot/run.sh +++ b/scripts/docker/install-sh-nonroot/run.sh @@ -32,12 +32,23 @@ if [[ -z "$CMD_PATH" && -x "$HOME/.npm-global/bin/$PACKAGE_NAME" ]]; then CLI_NAME="$PACKAGE_NAME" CMD_PATH="$HOME/.npm-global/bin/$PACKAGE_NAME" fi +ENTRY_PATH="" if [[ -z "$CMD_PATH" ]]; then + NPM_ROOT="$(npm root -g 2>/dev/null || true)" + if [[ -n "$NPM_ROOT" && -f "$NPM_ROOT/$PACKAGE_NAME/dist/entry.js" ]]; then + ENTRY_PATH="$NPM_ROOT/$PACKAGE_NAME/dist/entry.js" + fi +fi +if [[ -z "$CMD_PATH" && -z "$ENTRY_PATH" ]]; then echo "$PACKAGE_NAME is not on PATH" >&2 exit 1 fi echo "==> Verify CLI installed: $CLI_NAME" -INSTALLED_VERSION="$("$CMD_PATH" --version 2>/dev/null | head -n 1 | tr -d '\r')" +if [[ -n "$CMD_PATH" ]]; then + INSTALLED_VERSION="$("$CMD_PATH" --version 2>/dev/null | head -n 1 | tr -d '\r')" +else + INSTALLED_VERSION="$(node "$ENTRY_PATH" --version 2>/dev/null | head -n 1 | tr -d '\r')" +fi echo "cli=$CLI_NAME installed=$INSTALLED_VERSION expected=$LATEST_VERSION" if [[ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]]; then @@ -46,6 +57,10 @@ if [[ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]]; then fi echo "==> Sanity: CLI runs" -"$CMD_PATH" --help >/dev/null +if [[ -n "$CMD_PATH" ]]; then + "$CMD_PATH" --help >/dev/null +else + node "$ENTRY_PATH" --help >/dev/null +fi echo "OK" diff --git a/scripts/docker/install-sh-smoke/run.sh b/scripts/docker/install-sh-smoke/run.sh index 7b2cdd5c482..03702788784 100755 --- a/scripts/docker/install-sh-smoke/run.sh +++ b/scripts/docker/install-sh-smoke/run.sh @@ -52,14 +52,29 @@ curl -fsSL "$INSTALL_URL" | bash echo "==> Verify installed version" CLI_NAME="$PACKAGE_NAME" -if ! command -v "$CLI_NAME" >/dev/null 2>&1; then +CMD_PATH="$(command -v "$CLI_NAME" || true)" +if [[ -z "$CMD_PATH" && -x "$HOME/.npm-global/bin/$PACKAGE_NAME" ]]; then + CMD_PATH="$HOME/.npm-global/bin/$PACKAGE_NAME" +fi +ENTRY_PATH="" +if [[ -z "$CMD_PATH" ]]; then + NPM_ROOT="$(npm root -g 2>/dev/null || true)" + if [[ -n "$NPM_ROOT" && -f "$NPM_ROOT/$PACKAGE_NAME/dist/entry.js" ]]; then + ENTRY_PATH="$NPM_ROOT/$PACKAGE_NAME/dist/entry.js" + fi +fi +if [[ -z "$CMD_PATH" && -z "$ENTRY_PATH" ]]; then echo "ERROR: $PACKAGE_NAME is not on PATH" >&2 exit 1 fi if [[ -n "${OPENCLAW_INSTALL_LATEST_OUT:-}" ]]; then printf "%s" "$LATEST_VERSION" > "${OPENCLAW_INSTALL_LATEST_OUT:-}" fi -INSTALLED_VERSION="$("$CLI_NAME" --version 2>/dev/null | head -n 1 | tr -d '\r')" +if [[ -n "$CMD_PATH" ]]; then + INSTALLED_VERSION="$("$CMD_PATH" --version 2>/dev/null | head -n 1 | tr -d '\r')" +else + INSTALLED_VERSION="$(node "$ENTRY_PATH" --version 2>/dev/null | head -n 1 | tr -d '\r')" +fi echo "cli=$CLI_NAME installed=$INSTALLED_VERSION expected=$LATEST_VERSION" if [[ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]]; then @@ -68,6 +83,10 @@ if [[ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]]; then fi echo "==> Sanity: CLI runs" -"$CLI_NAME" --help >/dev/null +if [[ -n "$CMD_PATH" ]]; then + "$CMD_PATH" --help >/dev/null +else + node "$ENTRY_PATH" --help >/dev/null +fi echo "OK" diff --git a/scripts/test-install-sh-docker.sh b/scripts/test-install-sh-docker.sh index 689647d739c..26e1e9f1fc4 100755 --- a/scripts/test-install-sh-docker.sh +++ b/scripts/test-install-sh-docker.sh @@ -21,6 +21,7 @@ docker run --rm -t \ -v "${LATEST_DIR}:/out" \ -e OPENCLAW_INSTALL_URL="$INSTALL_URL" \ -e OPENCLAW_INSTALL_METHOD=npm \ + -e OPENCLAW_USE_GUM=0 \ -e OPENCLAW_INSTALL_LATEST_OUT="/out/latest" \ -e OPENCLAW_INSTALL_SMOKE_PREVIOUS="${OPENCLAW_INSTALL_SMOKE_PREVIOUS:-${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}}" \ -e OPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS="${OPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS:-${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}}" \ @@ -46,6 +47,7 @@ else docker run --rm -t \ -e OPENCLAW_INSTALL_URL="$INSTALL_URL" \ -e OPENCLAW_INSTALL_METHOD=npm \ + -e OPENCLAW_USE_GUM=0 \ -e OPENCLAW_INSTALL_EXPECT_VERSION="$LATEST_VERSION" \ -e OPENCLAW_NO_ONBOARD=1 \ -e DEBIAN_FRONTEND=noninteractive \ @@ -67,6 +69,7 @@ docker run --rm -t \ --entrypoint /bin/bash \ -e OPENCLAW_INSTALL_URL="$INSTALL_URL" \ -e OPENCLAW_INSTALL_CLI_URL="$CLI_INSTALL_URL" \ + -e OPENCLAW_USE_GUM=0 \ -e OPENCLAW_NO_ONBOARD=1 \ -e DEBIAN_FRONTEND=noninteractive \ "$NONROOT_IMAGE" -lc "curl -fsSL \"$CLI_INSTALL_URL\" | bash -s -- --set-npm-prefix --no-onboard"