


























@@ -38,6 +38,7 @@ CANDIDATE_KIND="${OPENCLAW_UPGRADE_SURVIVOR_CANDIDATE_KIND:-tarball}"
3838CANDIDATE_SPEC="${OPENCLAW_UPGRADE_SURVIVOR_CANDIDATE_SPEC:-${OPENCLAW_CURRENT_PACKAGE_TGZ:-}}"
3939SCENARIO="${OPENCLAW_UPGRADE_SURVIVOR_SCENARIO:-base}"
4040UPDATE_RESTART_MODE="${OPENCLAW_UPGRADE_SURVIVOR_UPDATE_RESTART_MODE:-manual}"
41+ROOT_MANAGED_VPS="${OPENCLAW_UPGRADE_SURVIVOR_ROOT_MANAGED_VPS:-0}"
4142CURRENT_PHASE="setup"
4243FAILURE_PHASE=""
4344FAILURE_MESSAGE=""
@@ -681,7 +682,16 @@ install_baseline() {
681682682683seed_state() {
683684 openclaw_e2e_eval_test_state_from_b64 "${OPENCLAW_TEST_STATE_FUNCTION_B64:?missing OPENCLAW_TEST_STATE_FUNCTION_B64}"
684- openclaw_test_state_create "$ARTIFACT_ROOT/state-home" minimal
685+if [ "$ROOT_MANAGED_VPS" = "1" ]; then
686+if [ "$(id -u)" -ne 0 ]; then
687+echo "root-managed VPS survivor mode must run as uid 0" >&2
688+return 1
689+fi
690+ rm -rf /root/.openclaw /root/workspace
691+ openclaw_test_state_create /root minimal
692+else
693+ openclaw_test_state_create "$ARTIFACT_ROOT/state-home" minimal
694+fi
685695export OPENCLAW_UPGRADE_SURVIVOR_BASELINE_VERSION="$baseline_version"
686696 node scripts/e2e/lib/upgrade-survivor/assertions.mjs seed
687697}
@@ -1037,12 +1047,21 @@ update_candidate() {
10371047local update_start=""
10381048local update_end=""
10391049local update_args=(update --tag "$CANDIDATE_SPEC" --yes --json)
1050+local update_env=(
1051+ env
1052+ -u OPENCLAW_GATEWAY_TOKEN
1053+ -u OPENCLAW_GATEWAY_PASSWORD
1054+ -u OPENCLAW_ALLOW_ROOT
1055+ )
10401056if [ "$UPDATE_RESTART_MODE" = "manual" ]; then
10411057 update_args+=(--no-restart)
10421058else
10431059 update_start="$(node -e "process.stdout.write(String(Date.now()))")"
10441060fi
1045-if ! env -u OPENCLAW_GATEWAY_TOKEN -u OPENCLAW_GATEWAY_PASSWORD OPENCLAW_ALLOW_ROOT=1 openclaw "${update_args[@]}" >"$UPDATE_JSON" 2>"$UPDATE_ERR"; then
1061+if [ "$ROOT_MANAGED_VPS" != "1" ]; then
1062+ update_env+=(OPENCLAW_ALLOW_ROOT=1)
1063+fi
1064+if ! "${update_env[@]}" openclaw "${update_args[@]}" >"$UPDATE_JSON" 2>"$UPDATE_ERR"; then
10461065echo "openclaw update failed" >&2
10471066 cat "$UPDATE_ERR" >&2 || true
10481067 cat "$UPDATE_JSON" >&2 || true
@@ -1063,6 +1082,20 @@ update_candidate() {
10631082 installed_version="$(read_installed_version)"
10641083}
106510841085+assert_root_managed_vps_cli_usable() {
1086+if [ "$ROOT_MANAGED_VPS" != "1" ]; then
1087+return 0
1088+fi
1089+local root_cli_env=(
1090+ env
1091+ -u OPENCLAW_GATEWAY_TOKEN
1092+ -u OPENCLAW_GATEWAY_PASSWORD
1093+ -u OPENCLAW_ALLOW_ROOT
1094+ )
1095+"${root_cli_env[@]}" openclaw config file >"$ARTIFACT_ROOT/root-vps-config-file.out" 2>"$ARTIFACT_ROOT/root-vps-config-file.err"
1096+"${root_cli_env[@]}" openclaw plugins >"$ARTIFACT_ROOT/root-vps-plugins.out" 2>"$ARTIFACT_ROOT/root-vps-plugins.err"
1097+}
1098+10661099run_doctor() {
10671100if ! openclaw doctor --fix --non-interactive >"$DOCTOR_LOG" 2>&1; then
10681101echo "openclaw doctor failed" >&2
@@ -1183,6 +1216,7 @@ phase seed-legacy-runtime-deps-symlink seed_legacy_runtime_deps_symlink
11831216phase resolve-candidate resolve_candidate_version
11841217phase prepare-update-restart-probe prepare_update_restart_probe
11851218phase update-candidate update_candidate
1219+phase root-managed-vps-cli-usable assert_root_managed_vps_cli_usable
11861220phase assert-legacy-plugin-dependency-debris-before-doctor assert_legacy_plugin_dependency_debris_before_doctor
11871221phase configure-configured-plugin-install-fixture-registry configure_configured_plugin_install_fixture_registry
11881222phase doctor run_doctor
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。