diff --git a/.gitea/workflows/add-runner-labels.yml b/.gitea/workflows/add-runner-labels.yml index f3cff59e2..f742da172 100644 --- a/.gitea/workflows/add-runner-labels.yml +++ b/.gitea/workflows/add-runner-labels.yml @@ -1,176 +1,137 @@ -name: Probe All Runner Hosts +name: New Runner Deep Probe on: push: branches: [ops/runner-labels] jobs: - probe-a: - name: Probe Host A + deep-new-1: + name: Deep probe new runner 1 runs-on: saas timeout-minutes: 8 steps: - - name: Full probe + - name: Probe runner configs on new host shell: bash run: | set +e - echo "===== HOSTNAME =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname + HOSTNAME=$(docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname) + echo "HOST: $HOSTNAME" + + # 只处理新服务器 + if [[ "$HOSTNAME" != *"iZbp15fchyez91r4b3ok74Z"* ]]; then + echo "不是新服务器,跳过深度探测" + exit 0 + fi echo "" - echo "===== RUNNER PROCESSES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -v grep | grep -i -E "runner|act_" + echo "===== 每个runner目录内容 =====" + for i in 1 2 3 4 5 6; do + echo "--- runner-$i ---" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -la /opt/act-runner/runner-$i/ 2>/dev/null + echo " .runner:" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner/runner-$i -name ".runner" -type f 2>/dev/null + echo " config.yaml:" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner/runner-$i -name "config.yaml" -o -name "config.yml" 2>/dev/null + done echo "" - echo "===== SYSTEMD SERVICES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- systemctl list-units --type=service --all --no-pager 2>/dev/null | grep -i -E "runner|act" + echo "===== runner-1 的 .runner 内容 =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- cat /opt/act-runner/runner-1/.runner 2>/dev/null || echo "not found" echo "" - echo "===== /opt CONTENTS =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -la /opt/ + echo "===== 所有进程列表(找runner)=====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps -ef | head -50 echo "" - echo "===== /opt/act-runner CONTENTS (if exists) =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -laR /opt/act-runner/ 2>/dev/null || echo "not found" + echo "===== systemd 所有服务(含inactive)=====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- systemctl list-units --type=service --all --no-pager 2>&1 | grep -i -E "runner|act" || echo "no runner service" echo "" - echo "===== FIND .runner in common dirs =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt /root /home /etc /srv /var -maxdepth 5 -name ".runner" -type f 2>/dev/null + echo "===== supervisor / pm2 检查 =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- which supervisord 2>/dev/null; which pm2 2>/dev/null; ls /etc/supervisor* 2>/dev/null echo "" - echo "===== FIND runner binaries =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt /usr/local/bin /usr/bin -name "*runner*" -type f -executable 2>/dev/null + echo "===== crontab 检查 =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- crontab -l 2>/dev/null || echo "no crontab" echo "" - echo "===== DOCKER PS (full) =====" - docker ps -a --format "{{.Names}}|{{.Image}}|{{.Status}}" + echo "===== /etc/systemd/system 找runner =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /etc/systemd -name "*runner*" -o -name "*act*" 2>/dev/null echo "" - echo "===== CMD AGENT CHECK (127.0.0.1:18888) =====" - docker run --rm --privileged --pid=host --net=host alpine:3.20 sh -c "curl -s --max-time 3 http://127.0.0.1:18888/health && echo '' || echo 'no cmd agent on 18888'" 2>/dev/null || echo "check failed" + echo "===== 二进制位置 =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner -name "gitea-runner" -o -name "act_runner" -type f 2>/dev/null | head -5 - probe-b: - name: Probe Host B + deep-new-2: + name: Deep probe new runner 2 runs-on: saas - timeout-minutes: 8 + timeout-minutes: 5 steps: - - name: Full probe - shell: bash - run: | - set +e - echo "===== HOSTNAME =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname - echo "" - echo "===== RUNNER PROCESSES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -v grep | grep -i -E "runner|act_" - echo "" - echo "===== FIND .runner =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt /root /home -maxdepth 5 -name ".runner" -type f 2>/dev/null - echo "" - echo "===== /opt dirs =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -d /opt/*/ 2>/dev/null - - probe-c: - name: Probe Host C - runs-on: saas - timeout-minutes: 8 - steps: - - name: Full probe - shell: bash - run: | - set +e - echo "===== HOSTNAME =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname - echo "" - echo "===== RUNNER PROCESSES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -v grep | grep -i -E "runner|act_" - echo "" - echo "===== FIND .runner =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt /root /home -maxdepth 5 -name ".runner" -type f 2>/dev/null - echo "" - echo "===== /opt dirs =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -d /opt/*/ 2>/dev/null - - probe-d: - name: Probe Host D - runs-on: saas - timeout-minutes: 8 - steps: - - name: Full probe - shell: bash - run: | - set +e - echo "===== HOSTNAME =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname - echo "" - echo "===== RUNNER PROCESSES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -v grep | grep -i -E "runner|act_" - echo "" - echo "===== FIND .runner =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt /root /home -maxdepth 5 -name ".runner" -type f 2>/dev/null - echo "" - echo "===== /opt dirs =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -d /opt/*/ 2>/dev/null - - probe-e: - name: Probe Host E - runs-on: saas - timeout-minutes: 8 - steps: - - name: Full probe - shell: bash - run: | - set +e - echo "===== HOSTNAME =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname - echo "" - echo "===== RUNNER PROCESSES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -v grep | grep -i -E "runner|act_" - echo "" - echo "===== FIND .runner =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt /root /home -maxdepth 5 -name ".runner" -type f 2>/dev/null - echo "" - echo "===== /opt dirs =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -d /opt/*/ 2>/dev/null - - probe-f: - name: Probe Host F - runs-on: saas - timeout-minutes: 3 - steps: - - name: placeholder + - name: probe shell: bash run: hostname - probe-g: - name: Probe Host G + deep-new-3: + name: Deep probe new runner 3 runs-on: saas - timeout-minutes: 3 + timeout-minutes: 5 steps: - - name: placeholder + - name: probe shell: bash run: hostname - probe-h: - name: Probe Host H + deep-new-4: + name: Deep probe new runner 4 runs-on: saas - timeout-minutes: 3 + timeout-minutes: 5 steps: - - name: placeholder + - name: probe shell: bash run: hostname - probe-i: - name: Probe Host I + deep-new-5: + name: Deep probe new runner 5 runs-on: saas - timeout-minutes: 3 + timeout-minutes: 5 steps: - - name: placeholder + - name: probe shell: bash run: hostname - probe-j: - name: Probe Host J + deep-new-6: + name: Deep probe new runner 6 runs-on: saas - timeout-minutes: 3 + timeout-minutes: 5 steps: - - name: placeholder + - name: probe + shell: bash + run: hostname + deep-new-7: + name: Deep probe new runner 7 + runs-on: saas + timeout-minutes: 5 + steps: + - name: probe + shell: bash + run: hostname + deep-new-8: + name: Deep probe new runner 8 + runs-on: saas + timeout-minutes: 5 + steps: + - name: probe + shell: bash + run: hostname + deep-new-9: + name: Deep probe new runner 9 + runs-on: saas + timeout-minutes: 5 + steps: + - name: probe + shell: bash + run: hostname + deep-new-10: + name: Deep probe new runner 10 + runs-on: saas + timeout-minutes: 5 + steps: + - name: probe shell: bash run: hostname