temp: runner expand 3 instances via cmd-agent workflow
Read runner config / read-config (push) Successful in 0s
Temp CMD Agent Token Read / read-token (push) Successful in 0s
Runner Expansion / expand-runner (push) Successful in 7s

This commit is contained in:
xiaoxia
2026-07-11 23:53:01 +08:00
parent fc6b4822cc
commit c653d7972f
+161 -25
View File
@@ -1,36 +1,172 @@
name: Temp CMD Agent Fix
on:
push:
branches:
- temp/cmd-agent-fix
on: push
jobs:
fix-cmd-agent:
name: Fix CMD Agent Token
expand-runners:
runs-on: host
timeout-minutes: 5
steps:
- name: Inspect CMD Agent
- name: Expand to 3 runner instances
run: |
echo "=== /opt/xiaoxia-cmd-agent 目录 ==="
ls -la /opt/xiaoxia-cmd-agent/
set +e
echo "========== Step 1: 检查当前runner状态 =========="
ps aux | grep "act_runner daemon" | grep -v grep
echo "当前runner进程数: $(ps aux | grep 'act_runner daemon' | grep -v grep | wc -l)"
echo ""
echo "=== 配置文件 ==="
find /opt/xiaoxia-cmd-agent -name "*.json" -o -name "*.yaml" -o -name "*.yml" -o -name "*.env" -o -name "*.conf" -o -name "config*" 2>/dev/null
echo "========== Step 2: 准备 runner-2 =========="
if [ -d /var/lib/xiaoxia-ci-runner-2 ] && [ -f /var/lib/xiaoxia-ci-runner-2/.runner ]; then
echo "runner-2 已存在,跳过注册"
else
mkdir -p /var/lib/xiaoxia-ci-runner-2
cp /var/lib/xiaoxia-ci/act_runner /var/lib/xiaoxia-ci-runner-2/act_runner
chmod +x /var/lib/xiaoxia-ci-runner-2/act_runner
cat > /var/lib/xiaoxia-ci-runner-2/.runner-config.yaml << 'CFG'
log:
level: info
runner:
file: .runner
capacity: 1
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- runtime-builder
- ubuntu-latest
- host
cache:
enabled: true
dir: /var/lib/xiaoxia-ci-runner-2/cache
host:
workdir_parent: /var/lib/xiaoxia-ci-runner-2/workspace
container:
network: host
CFG
# 从现有runner提取注册token和地址
REG_TOKEN=$(python3 -c "import json; d=json.load(open('/var/lib/xiaoxia-ci/.runner')); print(d['token'])" 2>/dev/null)
REG_ADDR=$(python3 -c "import json; d=json.load(open('/var/lib/xiaoxia-ci/.runner')); print(d['address'])" 2>/dev/null)
echo "注册地址: $REG_ADDR"
cd /var/lib/xiaoxia-ci-runner-2
./act_runner register \
--instance "$REG_ADDR" \
--token "$REG_TOKEN" \
--name "xiaoxia-ci-runner-2" \
--labels "runtime-builder:host,ubuntu-latest:host,host:host" \
--no-interactive 2>&1
echo "runner-2 注册完成"
fi
echo ""
echo "=== Python 源码 ==="
find /opt/xiaoxia-cmd-agent -name "*.py" 2>/dev/null
echo "========== Step 3: 准备 runner-3 =========="
if [ -d /var/lib/xiaoxia-ci-runner-3 ] && [ -f /var/lib/xiaoxia-ci-runner-3/.runner ]; then
echo "runner-3 已存在,跳过注册"
else
mkdir -p /var/lib/xiaoxia-ci-runner-3
cp /var/lib/xiaoxia-ci/act_runner /var/lib/xiaoxia-ci-runner-3/act_runner
chmod +x /var/lib/xiaoxia-ci-runner-3/act_runner
cat > /var/lib/xiaoxia-ci-runner-3/.runner-config.yaml << 'CFG'
log:
level: info
runner:
file: .runner
capacity: 1
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- runtime-builder
- ubuntu-latest
- host
cache:
enabled: true
dir: /var/lib/xiaoxia-ci-runner-3/cache
host:
workdir_parent: /var/lib/xiaoxia-ci-runner-3/workspace
container:
network: host
CFG
REG_TOKEN=$(python3 -c "import json; d=json.load(open('/var/lib/xiaoxia-ci/.runner')); print(d['token'])" 2>/dev/null)
REG_ADDR=$(python3 -c "import json; d=json.load(open('/var/lib/xiaoxia-ci/.runner')); print(d['address'])" 2>/dev/null)
cd /var/lib/xiaoxia-ci-runner-3
./act_runner register \
--instance "$REG_ADDR" \
--token "$REG_TOKEN" \
--name "xiaoxia-ci-runner-3" \
--labels "runtime-builder:host,ubuntu-latest:host,host:host" \
--no-interactive 2>&1
echo "runner-3 注册完成"
fi
echo ""
echo "=== systemd service 文件 ==="
systemctl cat xiaoxia-cmd-agent.service 2>&1 || true
- name: Read main source
run: |
echo "=== 主程序文件 ==="
cat /opt/xiaoxia-cmd-agent/*.py 2>/dev/null | head -200 || true
echo "========== Step 4: 创建 systemd 服务 =========="
cat > /etc/systemd/system/act_runner-2.service << 'SVC'
[Unit]
Description=Gitea Actions Runner 2
After=gitea.service network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/xiaoxia-ci-runner-2
ExecStart=/var/lib/xiaoxia-ci-runner-2/act_runner daemon --config .runner-config.yaml
Restart=always
RestartSec=5s
User=root
[Install]
WantedBy=multi-user.target
SVC
cat > /etc/systemd/system/act_runner-3.service << 'SVC'
[Unit]
Description=Gitea Actions Runner 3
After=gitea.service network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/xiaoxia-ci-runner-3
ExecStart=/var/lib/xiaoxia-ci-runner-3/act_runner daemon --config .runner-config.yaml
Restart=always
RestartSec=5s
User=root
[Install]
WantedBy=multi-user.target
SVC
systemctl daemon-reload
echo "服务文件创建完成"
echo ""
echo "=== config 文件 ==="
cat /opt/xiaoxia-cmd-agent/config.json 2>/dev/null || cat /opt/xiaoxia-cmd-agent/config.yaml 2>/dev/null || cat /opt/xiaoxia-cmd-agent/.env 2>/dev/null || echo "未找到配置文件"
echo "========== Step 5: 启动新 runner =========="
systemctl enable act_runner-2.service 2>&1
systemctl enable act_runner-3.service 2>&1
systemctl start act_runner-2.service 2>&1
systemctl start act_runner-3.service 2>&1
sleep 8
echo ""
echo "=== token 相关文件 ==="
find /opt/xiaoxia-cmd-agent -name "*token*" -o -name "*auth*" -o -name "*key*" 2>/dev/null
echo "========== Step 6: 验证结果 =========="
echo "--- 进程数 ---"
ps aux | grep "act_runner daemon" | grep -v grep
echo "总进程数: $(ps aux | grep 'act_runner daemon' | grep -v grep | wc -l)"
echo ""
echo "--- 服务状态 ---"
systemctl is-active act_runner.service act_runner-2.service act_runner-3.service 2>&1
echo ""
echo "--- 各runner注册信息 ---"
for d in /var/lib/xiaoxia-ci /var/lib/xiaoxia-ci-runner-2 /var/lib/xiaoxia-ci-runner-3; do
if [ -f "$d/.runner" ]; then
python3 -c "
import json
d = json.load(open('$d/.runner'))
print(f' $d: id={d[\"id\"]}, name={d[\"name\"]}')
" 2>/dev/null
fi
done
echo ""
echo "========== 扩容完成 =========="