Skip to content
#0458
ContainersTerminal

The compatibility matrix is a row of idle containers

Your library promises Python 3.9 through 3.13 and four Django versions. That's twenty combinations. CI builds them from scratch on every push, and the step that installs the toolchain takes longer than the tests.

On Hoody the twenty combinations are twenty containers, built once, kept. Each has its interpreter and framework installed and its dependencies resolved. Between pushes they sit idle: no CPU, disk blocks shared with the base image copy-on-write. A push fans the test command out to all twenty over HTTP; each runs in a couple of minutes on an environment that was already warm.

On per-runner pricing, twenty permanent environments is twenty line items, so you rebuild from zero instead. On a flat-rate box, twenty idle environments is a folder.

The matrix stopped being something CI recreates and became something that exists.