fix: use built-in token, download node binary directly
Check New Server Env / check (push) Successful in 1s
Downgrade New Runners to v0.2.6 / downgrade (push) Successful in 25s

This commit is contained in:
2026-07-13 18:41:11 +08:00
parent c3509e2ab1
commit 0c08cdf0db
+39 -44
View File
@@ -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全部完成!")