diff --git a/register_runners.sh b/register_runners.sh index a1a14cd05..1485fa37d 100644 --- a/register_runners.sh +++ b/register_runners.sh @@ -1,39 +1,57 @@ #!/bin/bash set -e -REPO_TOKEN="ZMFH02WcdElay5ATmhhQYe1WNTESO9XMXcF0H9Tj" -GITEA_URL="https://git.xiaoxiajianji.com" -BASE_DIR="/opt/act-runner" -LABELS="saas,runtime-builder,host,ubuntu-latest" +echo "=== 探测Runner环境 ===" +echo "Hostname: $(hostname)" +echo "IPs: $(hostname -I)" + +# 找act_runner +ACT_RUNNER="" +for p in /opt/act-runner/runner-1/act_runner /opt/act-runner/runner-2/act_runner /var/lib/xiaoxia-ci/act_runner /usr/local/bin/act_runner; do + if [ -f "$p" ]; then + ACT_RUNNER="$p" + echo "Found act_runner: $p" + $p --version 2>&1 || true + break + fi +done -# 找到act_runner二进制 -ACT_RUNNER=$(find /opt/act-runner -name act_runner -type f 2>/dev/null | head -1) if [ -z "$ACT_RUNNER" ]; then - echo "ERROR: act_runner binary not found" - find / -name act_runner -type f 2>/dev/null | head -5 + echo "Searching for act_runner..." + find /opt /var -name act_runner -type f 2>/dev/null | head -10 + echo "ERROR: act_runner not found" exit 1 fi -echo "Found act_runner: $ACT_RUNNER" -echo "Version: $($ACT_RUNNER --version 2>&1)" -# 注册6个新的仓库级Runner -for i in $(seq 6 11); do - RUNNER_DIR="${BASE_DIR}/saas-runner-${i}" - echo "=== Registering saas-runner-${i} ===" +# 只在新服务器上执行(hostname包含new或特定标识) +# 或者只在有多个runner目录的服务器上执行 +RUNNER_COUNT=$(find /opt/act-runner -maxdepth 1 -type d -name "runner-*" 2>/dev/null | wc -l) +echo "Runner dirs count: $RUNNER_COUNT" + +# 如果是新服务器(有5个runner目录),执行注册 +if [ "$RUNNER_COUNT" -ge 5 ]; then + echo "=== 检测到新服务器,开始注册6个仓库级Runner ===" - mkdir -p "$RUNNER_DIR" - cd "$RUNNER_DIR" + REPO_TOKEN="ZMFH02WcdElay5ATmhhQYe1WNTESO9XMXcF0H9Tj" + GITEA_URL="https://git.xiaoxiajianji.com" + BASE_DIR="/opt/act-runner" + LABELS="saas,runtime-builder,host,ubuntu-latest" - # 注册 - $ACT_RUNNER register \ - --instance "$GITEA_URL" \ - --token "$REPO_TOKEN" \ - --name "saas-runner-${i}" \ - --labels "$LABELS" \ - --no-interactive 2>&1 - - # 创建systemd服务 - cat > /etc/systemd/system/gitea-saas-runner-${i}.service << EOF + for i in $(seq 6 11); do + RUNNER_DIR="${BASE_DIR}/saas-runner-${i}" + echo "--- Registering saas-runner-${i} ---" + + mkdir -p "$RUNNER_DIR" + cd "$RUNNER_DIR" + + $ACT_RUNNER register \ + --instance "$GITEA_URL" \ + --token "$REPO_TOKEN" \ + --name "saas-runner-${i}" \ + --labels "$LABELS" \ + --no-interactive 2>&1 + + cat > /etc/systemd/system/gitea-saas-runner-${i}.service << EOF [Unit] Description=Gitea Actions Runner saas-${i} After=network.target @@ -49,13 +67,18 @@ User=root [Install] WantedBy=multi-user.target EOF + + systemctl daemon-reload + systemctl enable gitea-saas-runner-${i} + systemctl start gitea-saas-runner-${i} + echo "Started saas-runner-${i}" + sleep 1 + done - systemctl daemon-reload - systemctl enable gitea-saas-runner-${i} - systemctl start gitea-saas-runner-${i} - echo "Started saas-runner-${i}" - sleep 1 -done - -echo "=== All 6 runners registered ===" -systemctl status gitea-saas-runner-* --no-pager | head -40 + echo "=== 全部注册完成 ===" + systemctl status gitea-saas-runner-* --no-pager | head -60 +else + echo "不是新服务器(Runner目录不足5个),跳过注册" + echo "这台机器上Runner目录数: $RUNNER_COUNT" + ls /opt/act-runner/ 2>/dev/null || echo "no /opt/act-runner" +fi