60 lines
2.5 KiB
YAML
60 lines
2.5 KiB
YAML
name: 'Set up build disk on hosted runners'
|
|
description: |
|
|
Relocate Docker's data-root to /mnt (which has ~75 GB free, vs ~20 GB
|
|
on / after free-disk-space). Combined with the apt cleanup, gives
|
|
~100 GB working space for buildx — enough for ROCm dev image + vLLM
|
|
torch install + flash-attn build.
|
|
|
|
No-op on:
|
|
- self-hosted runners (no /mnt expectation)
|
|
- non-X64 runners (verify /mnt shape on ubuntu-24.04-arm separately
|
|
before enabling there — see Task 3.2 in the migration plan)
|
|
- mode=skip (force-disable from caller)
|
|
|
|
Must run after free-disk-space (which removes large packages — would
|
|
fail mid-uninstall if Docker were stopped) and before any Docker
|
|
operation (setup-qemu, setup-buildx, login, build) so the relocated
|
|
data-root catches all subsequent docker activity.
|
|
|
|
inputs:
|
|
mode:
|
|
description: 'auto (default — relocate on hosted X64 only) or skip'
|
|
required: false
|
|
default: 'auto'
|
|
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
- name: Relocate Docker data-root to /mnt
|
|
if: inputs.mode == 'auto' && runner.environment == 'github-hosted' && runner.arch == 'X64'
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
echo "Before relocation:"
|
|
df -h / /mnt || true
|
|
sudo systemctl stop docker docker.socket
|
|
sudo mkdir -p /mnt/docker-data /mnt/docker-tmp
|
|
# buildx CLI runs as the unprivileged runner user and creates
|
|
# config dirs under TMPDIR before binding them into the buildkit
|
|
# container. /mnt is owned by root by default; mirror /tmp's
|
|
# 1777 (world-writable + sticky) so non-root processes can write.
|
|
sudo chmod 1777 /mnt/docker-tmp
|
|
if [ -d /var/lib/docker ] && [ ! -L /var/lib/docker ]; then
|
|
sudo rsync -a /var/lib/docker/ /mnt/docker-data/
|
|
sudo rm -rf /var/lib/docker
|
|
sudo ln -s /mnt/docker-data /var/lib/docker
|
|
fi
|
|
# daemon.json may not exist; merge data-root in or create minimal.
|
|
if [ -f /etc/docker/daemon.json ]; then
|
|
sudo jq '."data-root" = "/mnt/docker-data"' /etc/docker/daemon.json | sudo tee /etc/docker/daemon.json.new >/dev/null
|
|
sudo mv /etc/docker/daemon.json.new /etc/docker/daemon.json
|
|
else
|
|
echo '{"data-root":"/mnt/docker-data"}' | sudo tee /etc/docker/daemon.json
|
|
fi
|
|
sudo systemctl start docker
|
|
# Make TMPDIR persist for subsequent steps in the same job.
|
|
echo "TMPDIR=/mnt/docker-tmp" >> "$GITHUB_ENV"
|
|
echo "After relocation:"
|
|
df -h / /mnt
|
|
docker info | grep -i 'docker root dir' || true
|