From d54ff7ceac06dcc1fbc44401393dc00dd57b8b75 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sat, 11 Jul 2026 23:55:13 +0800 Subject: [PATCH] temp: expand to 3 runner instances --- .gitea/workflows/temp-runner-expand.yml | 170 +++++++++++++++++++++--- 1 file changed, 154 insertions(+), 16 deletions(-) diff --git a/.gitea/workflows/temp-runner-expand.yml b/.gitea/workflows/temp-runner-expand.yml index c08be0f0a..0794a4664 100644 --- a/.gitea/workflows/temp-runner-expand.yml +++ b/.gitea/workflows/temp-runner-expand.yml @@ -1,26 +1,164 @@ -name: Runner Expansion +name: Runner Expand on: push jobs: - expand-runner: + expand: runs-on: host steps: - - name: Inspect runner config and expand + - name: Expand to 3 runner instances run: | - echo "=== 当前act-runner配置 ===" - cat /opt/act-runner/config.yaml 2>&1 || echo "NOT FOUND at /opt/act-runner" + set +e + + echo "========== Step 1: 检查当前runner ==========" + echo "当前进程数: $(ps aux | grep 'act_runner daemon' | grep -v grep | wc -l)" + echo "" - echo "=== 查找所有runner位置 ===" - find /opt /etc /var -name "config.yaml" -path "*act*" 2>/dev/null - find /opt /etc /var -name "*.runner" 2>/dev/null - find /opt -name "gitea-runner" -type f 2>/dev/null + echo "========== Step 2: 创建 runner-2 ==========" + if [ -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 + + REG_TOKEN=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['token'])" 2>/dev/null) + REG_ADDR=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['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 "=== 当前runner进程 ===" - ps aux | grep -E "act|runner" | grep -v grep + echo "========== Step 3: 创建 runner-3 ==========" + if [ -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; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['token'])" 2>/dev/null) + REG_ADDR=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['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 runner服务 ===" - systemctl list-units --type=service 2>/dev/null | grep -i runner || 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 + systemctl enable act_runner-2.service 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 "=== runner版本 ===" - /opt/act-runner/gitea-runner --version 2>&1 || find /opt -name "gitea-runner" -exec {} --version \; 2>&1 | head -5 - + echo "========== Step 5: 验证 ==========" + COUNT=$(ps aux | grep 'act_runner daemon' | grep -v grep | wc -l) + echo "runner进程数: $COUNT" + ps aux | grep 'act_runner daemon' | grep -v grep + echo "" + echo "服务状态:" + systemctl is-active act_runner.service act_runner-2.service act_runner-3.service 2>&1 + echo "" + echo "注册信息:" + 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[\"name\"]}: id={d[\"id\"]}') +" 2>/dev/null + fi + done + echo "" + echo "========== DONE =========="