ci(devcontainers): free runner disk before memory-stack validation

The memory-stack devcontainer (Neo4j + Postgres + Redis + Qdrant
on top of the Docker base) is too heavy for the current
GitHub-hosted runner image: this PR's two CI runs both failed
with "No space left on device" before the smoke test could
finish. The default devcontainer passes on the same image —
memory-stack is the only path that exceeds the runner's disk.

devcontainers.yml only triggers when one of these changes:
  .devcontainer/**
  .github/workflows/devcontainers.yml
  pyproject.toml
  uv.lock

PR #492/#493/#494 didn't touch any of those, so the failure was
latent. PR #495 bumps pyproject.toml (0.9.1 -> 0.22.3) which
surfaced it.

Fix: add `jlumbroso/free-disk-space@v1.3.1` ahead of "Start
memory-stack" to reclaim ~14 GB from preinstalled Android SDK +
.NET + Haskell tool caches the devcontainer doesn't need. Scoped
to `if: matrix.name == 'memory-stack'` — the default validate
still benefits from the toolcache.

Pinned to v1.3.1 (the latest release at time of writing) to match
the project's tag-pinning style for third-party actions.
This commit is contained in:
chopratejas 2026-05-25 19:36:23 -07:00
parent 74843d1d62
commit 7020684ce7

View file

@ -32,6 +32,30 @@ jobs:
steps:
- uses: actions/checkout@v4
# The memory-stack devcontainer brings up Neo4j + Postgres +
# Redis + Qdrant on top of the Docker base. PR #495 surfaced
# that the GitHub-hosted runner now ships with too little
# headroom for that stack: the runner's diagnostic log writer
# hit "No space left on device" mid-smoke-test, killing the
# job before `devcontainer exec` could finish. The default
# devcontainer is light enough to pass on the same image.
#
# Reclaim ~14 GB by stripping preinstalled tools none of the
# devcontainer paths use (Android SDK, .NET, Haskell). Run
# ONLY on memory-stack — the default validate is fast and
# benefits from the preinstalled toolcache.
- name: Free runner disk (memory-stack only)
if: matrix.name == 'memory-stack'
uses: jlumbroso/free-disk-space@v1.3.1
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: false
swap-storage: false
- name: Set up Node
uses: actions/setup-node@v4
with: