test(install): harden docker tgz smoke flow

This commit is contained in:
Peter Steinberger
2026-04-11 14:27:01 +01:00
parent b7cc064961
commit 0dd4958bc8
3 changed files with 90 additions and 32 deletions

View File

@@ -16,6 +16,7 @@ extract_openclaw_semver() {
quiet_npm() {
npm \
--loglevel=error \
--logs-max=0 \
--no-update-notifier \
--no-fund \
--no-audit \

View File

@@ -7,7 +7,10 @@ SMOKE_PREVIOUS_VERSION="${OPENCLAW_INSTALL_SMOKE_PREVIOUS:-}"
SKIP_PREVIOUS="${OPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS:-0}"
DEFAULT_PACKAGE="openclaw"
PACKAGE_NAME="${OPENCLAW_INSTALL_PACKAGE:-$DEFAULT_PACKAGE}"
FRESH_VERSION="${OPENCLAW_INSTALL_FRESH_VERSION:-}"
FRESH_TAG_URL="${OPENCLAW_INSTALL_FRESH_TAG_URL:-}"
UPDATE_BASELINE_VERSION="${OPENCLAW_INSTALL_UPDATE_BASELINE:-2026.4.10}"
UPDATE_BASELINE_TAG_URL="${OPENCLAW_INSTALL_UPDATE_BASELINE_TAG_URL:-}"
UPDATE_EXPECT_VERSION="${OPENCLAW_INSTALL_UPDATE_EXPECT_VERSION:-}"
UPDATE_TAG_URL="${OPENCLAW_INSTALL_UPDATE_TAG_URL:-}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
@@ -16,6 +19,21 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "$SCRIPT_DIR/../install-sh-common/cli-verify.sh"
run_install_smoke() {
if [[ -n "$FRESH_VERSION" && -n "$FRESH_TAG_URL" ]]; then
echo "package=$PACKAGE_NAME latest=$FRESH_VERSION source=$FRESH_TAG_URL"
echo "==> Install latest release tarball"
quiet_npm install -g --omit=optional "$FRESH_TAG_URL"
echo "==> Verify installed version"
if [[ -n "${OPENCLAW_INSTALL_LATEST_OUT:-}" ]]; then
printf "%s" "$FRESH_VERSION" > "${OPENCLAW_INSTALL_LATEST_OUT:-}"
fi
verify_installed_cli "$PACKAGE_NAME" "$FRESH_VERSION"
echo "OK"
return 0
fi
echo "==> Resolve npm versions"
if [[ "$SKIP_PREVIOUS" == "1" ]]; then
LATEST_VERSION="$(quiet_npm view "$PACKAGE_NAME" version)"
@@ -84,12 +102,26 @@ run_update_smoke() {
echo "package=$PACKAGE_NAME baseline=$UPDATE_BASELINE_VERSION target=$UPDATE_EXPECT_VERSION"
echo "==> Install baseline release"
quiet_npm install -g "${PACKAGE_NAME}@${UPDATE_BASELINE_VERSION}"
if [[ -n "$UPDATE_BASELINE_TAG_URL" ]]; then
quiet_npm install -g --omit=optional "$UPDATE_BASELINE_TAG_URL"
else
quiet_npm install -g --omit=optional "${PACKAGE_NAME}@${UPDATE_BASELINE_VERSION}"
fi
verify_installed_cli "$PACKAGE_NAME" "$UPDATE_BASELINE_VERSION"
echo "==> Run openclaw update from host-served tgz"
UPDATE_JSON="$(openclaw update --tag "$UPDATE_TAG_URL" --yes --json)"
local update_status
set +e
UPDATE_JSON="$(
npm_config_omit=optional NPM_CONFIG_OMIT=optional openclaw update --tag "$UPDATE_TAG_URL" --yes --json 2>&1
)"
update_status=$?
set -e
printf "%s\n" "$UPDATE_JSON"
if [[ "$update_status" -ne 0 ]]; then
echo "ERROR: openclaw update failed with exit code $update_status" >&2
return "$update_status"
fi
UPDATE_JSON="$UPDATE_JSON" \
UPDATE_EXPECT_VERSION="$UPDATE_EXPECT_VERSION" \