fix: use built-in token, download node binary directly
This commit is contained in:
@@ -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全部完成!")
|
||||
|
||||
Reference in New Issue
Block a user