From 0c08cdf0db2ba92b924cea5b2576f0ff69269830 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 13 Jul 2026 18:41:11 +0800 Subject: [PATCH] fix: use built-in token, download node binary directly --- scripts/fix_new_server_env.py | 83 ++++++++++++++++------------------- 1 file changed, 39 insertions(+), 44 deletions(-) diff --git a/scripts/fix_new_server_env.py b/scripts/fix_new_server_env.py index 1fe73ea18..be9f19614 100644 --- a/scripts/fix_new_server_env.py +++ b/scripts/fix_new_server_env.py @@ -1,12 +1,14 @@ #!/usr/bin/env python3 -"""通过CMD Agent修复新服务器环境:安装Node.js、确认系统信息""" -import subprocess +"""通过CMD Agent修复新服务器环境:安装Node.js""" import json import urllib.request -import time NEW_SERVER = "172.30.18.199" API_KEY = "xiaoxia-cmd-agent-2026" +GITEA_TOKEN = "1f8058d097e3942a9ed31c44382baf7f08311272" +GITEA_API = "https://git.xiaoxiajianji.com/api/v1" +REPO = "xiaoxia/xiaoxia-saas" +BRANCH = "ops/downgrade-runners" def cmd(cmd_str, timeout=120): url = f"http://{NEW_SERVER}:5927/cmd" @@ -21,58 +23,51 @@ def cmd(cmd_str, timeout=120): except Exception as e: return -1, "", str(e) -print("=" * 50) -print("步骤1: 系统信息确认") -print("=" * 50) -rc, out, err = cmd("cat /etc/os-release | head -5 && echo '---' && uname -a && echo '---' && which yum dnf apt-get 2>/dev/null || true") -print(out[:500]) - -print("\n" + "=" * 50) -print("步骤2: 用yum安装Node.js 20 (nodesource)") -print("=" * 50) -# CentOS用curl下载nodesource的rpm包或者直接用yum模块 -rc, out, err = cmd(""" -# 先试curl下载Node.js二进制包(最稳妥,不依赖包管理器) -cd /tmp -curl -fsSL https://nodejs.org/dist/v20.15.0/node-v20.15.0-linux-x64.tar.xz -o node.tar.xz 2>&1 | tail -3 -ls -lh node.tar.xz +# 先检查Node是否已装 +rc, out, err = cmd("which node && node --version 2>&1 || echo NOT_INSTALLED") +if "v20" in out: + print("Node.js 20 已经装好了:", out.strip()) +else: + print("Node.js 未安装,开始安装...") + print("=" * 50) + print("步骤1: 下载Node.js 20二进制") + print("=" * 50) + rc, out, err = cmd(""" +cd /tmp && curl -fsSL https://nodejs.org/dist/v20.15.0/node-v20.15.0-linux-x64.tar.xz -o node.tar.xz 2>&1 | tail -2 +ls -lh /tmp/node.tar.xz 2>&1 """, timeout=120) -print(f"下载结果 RC={rc}") -print(out[:500]) -if rc != 0: - print(f"ERR: {err[:300]}") + print(f"下载 RC={rc}") + print(out[:400]) -print("\n" + "=" * 50) -print("步骤3: 解压并安装到/usr/local") -print("=" * 50) -rc, out, err = cmd(""" -cd /tmp -tar -xf node.tar.xz -mv node-v20.15.0-linux-x64 /usr/local/node + print("\n步骤2: 解压安装") + rc, out, err = cmd(""" +cd /tmp && tar -xf node.tar.xz && rm -rf /usr/local/node && mv node-v20.15.0-linux-x64 /usr/local/node ln -sf /usr/local/node/bin/node /usr/local/bin/node ln -sf /usr/local/node/bin/npm /usr/local/bin/npm ln -sf /usr/local/node/bin/npx /usr/local/bin/npx -node --version -npm --version +node --version && npm --version which node """, timeout=60) -print(f"RC={rc}") -print(out[:300]) -if err and rc != 0: - print(f"ERR: {err[:200]}") + print(f"安装 RC={rc}") + print(out[:300]) print("\n" + "=" * 50) -print("步骤4: 验证Node.js可用") +print("步骤3: 最终验证") print("=" * 50) -rc, out, err = cmd("node -e 'console.log(\"node works: \" + process.version)'") -print(f"RC={rc}: {out.strip()}") +rc, out, err = cmd("node -e 'console.log(\"OK: \" + process.version)' 2>&1 && npm -v 2>&1") +print(out.strip()) print("\n" + "=" * 50) -print("步骤5: 检查Runner进程和配置") +print("步骤4: 重启6个Runner服务让环境生效") print("=" * 50) -rc, out, err = cmd("systemctl list-units 'act-runner-*' --no-legend | head -10 && echo '---' && ps aux | grep act_runner | grep -v grep | wc -l") -print(out[:500]) +rc, out, err = cmd(""" +for i in 1 2 3 4 5 6; do + systemctl restart act-runner-$i.service 2>&1 + echo "act-runner-$i restarted" +done +sleep 3 +systemctl list-units 'act-runner-*' --no-legend | head -10 +""", timeout=60) +print(out[:400]) -print("\n" + "=" * 50) -print("全部完成!") -print("=" * 50) +print("\n全部完成!")