From e2353e08c229e81a2270aac0ca4e77a66c8e1fef Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 14 Jul 2026 12:01:16 +0800 Subject: [PATCH] chore: probe all runner hosts (5 parallel) --- .gitea/workflows/add-runner-labels.yml | 186 ++++++++++++++++--------- 1 file changed, 117 insertions(+), 69 deletions(-) diff --git a/.gitea/workflows/add-runner-labels.yml b/.gitea/workflows/add-runner-labels.yml index 42dd93920..f3cff59e2 100644 --- a/.gitea/workflows/add-runner-labels.yml +++ b/.gitea/workflows/add-runner-labels.yml @@ -1,128 +1,176 @@ -name: Probe New Runner Deployment +name: Probe All Runner Hosts on: push: branches: [ops/runner-labels] jobs: - probe-deep: - name: Deep probe runner deployment + probe-a: + name: Probe Host A runs-on: saas timeout-minutes: 8 steps: - - name: Find all runner processes and configs + - name: Full probe shell: bash run: | set +e - echo "=== 宿主机名 ===" + echo "===== HOSTNAME =====" docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname echo "" - echo "=== 所有进程(找runner相关)===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -i -E "runner|act" | grep -v grep + 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 "=== 所有systemd服务(找runner相关)===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- systemctl list-units --type=service --all | grep -i -E "runner|act|gitea" + 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 "" - echo "=== /opt 目录 ===" + echo "===== /opt CONTENTS =====" docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -la /opt/ echo "" - echo "=== 全局找 .runner 文件 ===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find / -name ".runner" -type f 2>/dev/null | head -20 + 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 "" - echo "=== 全局找 gitea-runner 或 act_runner 二进制 ===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find / -name "gitea-runner" -o -name "act_runner" -o -name "runner" -type f -executable 2>/dev/null | head -20 + 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 "" - echo "=== docker ps 全量 ===" - docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" | head -30 + 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 "" - echo "=== docker compose 相关 ===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find / -name "docker-compose.yml" -o -name "compose.yml" 2>/dev/null | grep -i -E "runner|act" | head -10 + echo "===== DOCKER PS (full) =====" + docker ps -a --format "{{.Names}}|{{.Image}}|{{.Status}}" echo "" - echo "=== /root 目录 ===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls -la /root/ 2>/dev/null - - echo "" - echo "=== 找所有runner配置目录 ===" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find / -maxdepth 3 -name "*runner*" -type d 2>/dev/null | head -20 + 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" - probe-2: - name: Probe 2 + probe-b: + name: Probe Host B runs-on: saas - timeout-minutes: 5 + timeout-minutes: 8 steps: - - name: probe + - name: Full probe shell: bash - run: echo "placeholder for coverage" - probe-3: - name: Probe 3 + 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: 5 + timeout-minutes: 8 steps: - - name: probe + - name: Full probe shell: bash - run: echo "placeholder" - probe-4: - name: Probe 4 + 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: 5 + timeout-minutes: 8 steps: - - name: probe + - name: Full probe shell: bash - run: echo "placeholder" - probe-5: - name: Probe 5 + 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: 5 + timeout-minutes: 8 steps: - - name: probe + - name: Full probe shell: bash - run: echo "placeholder" - probe-6: - name: Probe 6 + 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: 5 + timeout-minutes: 3 steps: - - name: probe + - name: placeholder shell: bash - run: echo "placeholder" - probe-7: - name: Probe 7 + run: hostname + probe-g: + name: Probe Host G runs-on: saas - timeout-minutes: 5 + timeout-minutes: 3 steps: - - name: probe + - name: placeholder shell: bash - run: echo "placeholder" - probe-8: - name: Probe 8 + run: hostname + probe-h: + name: Probe Host H runs-on: saas - timeout-minutes: 5 + timeout-minutes: 3 steps: - - name: probe + - name: placeholder shell: bash - run: echo "placeholder" - probe-9: - name: Probe 9 + run: hostname + probe-i: + name: Probe Host I runs-on: saas - timeout-minutes: 5 + timeout-minutes: 3 steps: - - name: probe + - name: placeholder shell: bash - run: echo "placeholder" - probe-10: - name: Probe 10 + run: hostname + probe-j: + name: Probe Host J runs-on: saas - timeout-minutes: 5 + timeout-minutes: 3 steps: - - name: probe + - name: placeholder shell: bash - run: echo "placeholder" + run: hostname