




















@@ -1,5 +1,5 @@
11#!/usr/bin/env bash
2-# Installs a published OpenClaw npm package in Docker, performs Telegram
2+# Installs an OpenClaw package candidate in Docker, performs Telegram
33# onboarding/doctor recovery, then runs the Telegram QA live harness.
44set -euo pipefail
55@@ -9,6 +9,8 @@ source "$ROOT_DIR/scripts/lib/docker-e2e-image.sh"
99IMAGE_NAME="$(docker_e2e_resolve_image "openclaw-npm-telegram-live-e2e" OPENCLAW_NPM_TELEGRAM_LIVE_E2E_IMAGE)"
1010DOCKER_TARGET="${OPENCLAW_NPM_TELEGRAM_DOCKER_TARGET:-build}"
1111PACKAGE_SPEC="${OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC:-openclaw@beta}"
12+PACKAGE_TGZ="${OPENCLAW_NPM_TELEGRAM_PACKAGE_TGZ:-${OPENCLAW_CURRENT_PACKAGE_TGZ:-}}"
13+PACKAGE_LABEL="${OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL:-}"
1214OUTPUT_DIR="${OPENCLAW_NPM_TELEGRAM_OUTPUT_DIR:-.artifacts/qa-e2e/npm-telegram-live}"
13151416resolve_credential_source() {
@@ -46,7 +48,45 @@ validate_openclaw_package_spec() {
4648exit 1
4749}
485049-validate_openclaw_package_spec "$PACKAGE_SPEC"
51+resolve_package_tgz() {
52+local candidate="$1"
53+if [ -z "$candidate" ]; then
54+return 0
55+fi
56+if [ ! -f "$candidate" ]; then
57+echo "OPENCLAW_NPM_TELEGRAM_PACKAGE_TGZ must point to an existing .tgz file; got: $candidate" >&2
58+exit 1
59+fi
60+case "$candidate" in
61+*.tgz) ;;
62+*)
63+echo "OPENCLAW_NPM_TELEGRAM_PACKAGE_TGZ must point to a .tgz file; got: $candidate" >&2
64+exit 1
65+ ;;
66+esac
67+local dir
68+local base
69+ dir="$(cd "$(dirname "$candidate")" && pwd)"
70+ base="$(basename "$candidate")"
71+printf "%s/%s" "$dir" "$base"
72+}
73+74+package_mount_args=()
75+package_install_source="$PACKAGE_SPEC"
76+resolved_package_tgz="$(resolve_package_tgz "$PACKAGE_TGZ")"
77+if [ -n "$resolved_package_tgz" ]; then
78+ package_install_source="/package-under-test/$(basename "$resolved_package_tgz")"
79+ package_mount_args=(-v "$resolved_package_tgz:$package_install_source:ro")
80+else
81+ validate_openclaw_package_spec "$PACKAGE_SPEC"
82+fi
83+if [ -z "$PACKAGE_LABEL" ]; then
84+if [ -n "$resolved_package_tgz" ]; then
85+ PACKAGE_LABEL="$(basename "$resolved_package_tgz")"
86+else
87+ PACKAGE_LABEL="$PACKAGE_SPEC"
88+fi
89+fi
50905191docker_e2e_build_or_reuse "$IMAGE_NAME" npm-telegram-live "$ROOT_DIR/scripts/e2e/Dockerfile" "$ROOT_DIR" "$DOCKER_TARGET"
5292docker_e2e_harness_mount_args
@@ -64,6 +104,7 @@ fi
64104docker_env=(
65105 -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0
66106 -e OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC="$PACKAGE_SPEC"
107+ -e OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL="$PACKAGE_LABEL"
67108 -e OPENCLAW_NPM_TELEGRAM_OUTPUT_DIR="$OUTPUT_DIR"
68109 -e OPENCLAW_NPM_TELEGRAM_FAST="${OPENCLAW_NPM_TELEGRAM_FAST:-1}"
69110)
@@ -124,10 +165,12 @@ run_logged() {
124165>"$run_log"
125166}
126167127-echo "Running published npm Telegram live Docker E2E ($PACKAGE_SPEC)..."
168+echo "Running package Telegram live Docker E2E ($PACKAGE_LABEL)..."
128169run_logged docker run --rm \
129170 -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
130- -e OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC="$PACKAGE_SPEC" \
171+ -e OPENCLAW_NPM_TELEGRAM_INSTALL_SOURCE="$package_install_source" \
172+ -e OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL="$PACKAGE_LABEL" \
173+"${package_mount_args[@]}" \
131174 -v "$npm_prefix_host:/npm-global" \
132175 -i "$IMAGE_NAME" bash -s <<'EOF'
133176set -euo pipefail
@@ -136,15 +179,16 @@ export HOME="$(mktemp -d "/tmp/openclaw-npm-telegram-install.XXXXXX")"
136179export NPM_CONFIG_PREFIX="/npm-global"
137180export PATH="$NPM_CONFIG_PREFIX/bin:$PATH"
138181139-package_spec="${OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC:?missing OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC}"
140-echo "Installing ${package_spec}..."
141-npm install -g "$package_spec" --no-fund --no-audit
182+install_source="${OPENCLAW_NPM_TELEGRAM_INSTALL_SOURCE:?missing OPENCLAW_NPM_TELEGRAM_INSTALL_SOURCE}"
183+package_label="${OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL:-$install_source}"
184+echo "Installing ${package_label} from ${install_source}..."
185+npm install -g "$install_source" --no-fund --no-audit
142186143187command -v openclaw
144188openclaw --version
145189EOF
146190147-# Mount only test harness/plugin QA sources; the SUT itself is the npm install.
191+# Mount only test harness/plugin QA sources; the SUT itself is the installed package candidate.
148192run_logged docker run --rm \
149193"${docker_env[@]}" \
150194 -v "$ROOT_DIR/.artifacts:/app/.artifacts" \
@@ -161,7 +205,7 @@ export OPENCLAW_NPM_TELEGRAM_REPO_ROOT="/app"
161205162206dump_hotpath_logs() {
163207 local status="$1"
164- echo "installed npm onboarding recovery hot path failed with exit code $status" >&2
208+ echo "installed-package onboarding recovery hot path failed with exit code $status" >&2
165209 for file in \
166210 /tmp/openclaw-npm-telegram-onboard.json \
167211 /tmp/openclaw-npm-telegram-channel-add.log \
@@ -178,11 +222,11 @@ trap 'status=$?; dump_hotpath_logs "$status"; exit "$status"' ERR
178222command -v openclaw
179223openclaw --version
180224# The mounted QA harness imports openclaw/plugin-sdk; point that package import
181-# at the installed npm package without copying source into the test image.
225+# at the installed package without copying source into the test image.
182226mkdir -p /app/node_modules
183227ln -sfn /npm-global/lib/node_modules/openclaw /app/node_modules/openclaw
184228185-echo "Running installed npm onboarding recovery hot path..."
229+echo "Running installed-package onboarding recovery hot path..."
186230OPENAI_API_KEY="${OPENAI_API_KEY:-sk-openclaw-npm-telegram-hotpath}" openclaw onboard --non-interactive --accept-risk \
187231 --mode local \
188232 --auth-choice openai-api-key \
@@ -210,4 +254,4 @@ trap - ERR
210254tsx scripts/e2e/npm-telegram-live-runner.ts
211255EOF
212256213-echo "published npm Telegram live Docker E2E passed ($PACKAGE_SPEC)"
257+echo "package Telegram live Docker E2E passed ($PACKAGE_LABEL)"
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。