99 lines
1.8 KiB
Bash
Executable File
99 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -uo pipefail
|
|
|
|
label="${1:-runner}"
|
|
if [[ $# -gt 0 ]]; then
|
|
shift
|
|
fi
|
|
|
|
if [[ "${1:-}" == "--" ]]; then
|
|
shift
|
|
fi
|
|
|
|
docker_cmd=("$@")
|
|
|
|
run_bounded() {
|
|
local seconds="$1"
|
|
shift
|
|
|
|
if command -v timeout >/dev/null 2>&1; then
|
|
timeout "${seconds}s" "$@" || true
|
|
return
|
|
fi
|
|
|
|
"$@" || true
|
|
}
|
|
|
|
run_silent_bounded() {
|
|
local seconds="$1"
|
|
shift
|
|
|
|
if command -v timeout >/dev/null 2>&1; then
|
|
timeout "${seconds}s" "$@" >/dev/null 2>&1
|
|
return
|
|
fi
|
|
|
|
"$@" >/dev/null 2>&1
|
|
}
|
|
|
|
resolve_docker_cmd() {
|
|
if [[ "${#docker_cmd[@]}" -gt 0 ]]; then
|
|
return 0
|
|
fi
|
|
|
|
if command -v docker >/dev/null 2>&1 && run_silent_bounded 10 docker info; then
|
|
docker_cmd=(docker)
|
|
return 0
|
|
fi
|
|
|
|
if command -v sudo >/dev/null 2>&1 && run_silent_bounded 10 sudo -n docker info; then
|
|
docker_cmd=(sudo docker)
|
|
return 0
|
|
fi
|
|
|
|
docker_cmd=()
|
|
return 1
|
|
}
|
|
|
|
echo "::group::Runner diagnostics (${label})"
|
|
date --iso-8601=seconds 2>/dev/null || date
|
|
hostname || true
|
|
uname -a || true
|
|
|
|
if command -v free >/dev/null 2>&1; then
|
|
echo
|
|
echo "Memory:"
|
|
free -h || true
|
|
fi
|
|
|
|
if command -v df >/dev/null 2>&1; then
|
|
echo
|
|
echo "Disk:"
|
|
df -h / /tmp "$PWD" 2>/dev/null || df -h / /tmp 2>/dev/null || true
|
|
fi
|
|
|
|
if command -v systemd-inhibit >/dev/null 2>&1; then
|
|
echo
|
|
echo "Systemd inhibitors:"
|
|
run_bounded 10 systemd-inhibit --list
|
|
fi
|
|
|
|
if resolve_docker_cmd; then
|
|
echo
|
|
echo "Docker info:"
|
|
run_bounded 20 "${docker_cmd[@]}" info
|
|
|
|
echo
|
|
echo "Docker disk usage:"
|
|
run_bounded 20 "${docker_cmd[@]}" system df
|
|
|
|
echo
|
|
echo "Recent Docker containers:"
|
|
run_bounded 20 "${docker_cmd[@]}" ps -a --no-trunc --format "table {{.ID}}\t{{.Status}}\t{{.Names}}" | head -n 20 || true
|
|
else
|
|
echo
|
|
echo "Docker diagnostics unavailable to this runner user."
|
|
fi
|
|
|
|
echo "::endgroup::"
|