diff --git a/.github/workflows/ur-build-hw.yml b/.github/workflows/ur-build-hw.yml index f8d029ae537a2..cf6f6b6972d28 100644 --- a/.github/workflows/ur-build-hw.yml +++ b/.github/workflows/ur-build-hw.yml @@ -43,6 +43,10 @@ env: UR_LOG_NATIVE_CPU: "level:error;flush:error" UR_LOG_OPENCL: "level:error;flush:error" +# Free disk on the runner host before Docker must be enforced with a self-hosted +# job-started hook (same machine as the job). A separate workflow job with the +# same runs-on labels can land on a different host. See: +# devops/scripts/gha_runner_job_started_hook.sh jobs: adapter_build_hw: name: Build & CTS diff --git a/.github/workflows/ur-build-offload.yml b/.github/workflows/ur-build-offload.yml index a525cb8d799b2..dd3de98fb8c6c 100644 --- a/.github/workflows/ur-build-offload.yml +++ b/.github/workflows/ur-build-offload.yml @@ -2,6 +2,8 @@ name: UR - Build offload adapter permissions: read-all +# Pre-container disk check: use ACTIONS_RUNNER_HOOK_JOB_STARTED on self-hosted +# runners — see devops/scripts/gha_runner_job_started_hook.sh on: [ workflow_call, workflow_dispatch ] jobs: diff --git a/devops/scripts/gha_runner_job_started_hook.sh b/devops/scripts/gha_runner_job_started_hook.sh new file mode 100644 index 0000000000000..f6682ef7c91ec --- /dev/null +++ b/devops/scripts/gha_runner_job_started_hook.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Self-hosted GitHub Actions runner — job-started hook (runs on the HOST). +# +# Configure on each runner machine, e.g. in the service environment: +# ACTIONS_RUNNER_HOOK_JOB_STARTED=/path/to/llvm/devops/scripts/gha_runner_job_started_hook.sh +# +# GitHub runs this after a job is assigned to this runner but BEFORE the job +# container is created, so the check applies to the same host that will pull +# and run Docker (unlike a separate workflow job with the same runs-on labels, +# which may run on a different machine in the pool). +# +# Optional: UR_CI_MIN_FREE_DISK_MB (default 20480) — minimum free space on / in MiB. +# +# https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job + +set -euo pipefail + +MIN_MB="${UR_CI_MIN_FREE_DISK_MB:-20480}" + +if ! command -v df >/dev/null 2>&1; then + echo "WARNING: df not available; skipping UR CI disk preflight" + exit 0 +fi + +avail_kb="$(df -Pk / | awk 'NR==2 {print $4}')" +avail_mb=$((avail_kb / 1024)) + +echo "gha_runner_job_started_hook: free on / = ${avail_mb} MiB (minimum ${MIN_MB} MiB)" + +if [ "$avail_mb" -lt "$MIN_MB" ]; then + echo "ERROR: insufficient disk space on runner host (${avail_mb} MiB free, need at least ${MIN_MB} MiB)" + exit 1 +fi + +exit 0