Files
kevinveenbirkenbachandClaude Opus 5 f9dea42c68 fix(package-cache): survive a flaky apt mirror
A debian:bookworm workspace job died on `apt-get update`: the mounted
sources list carried the Ubuntu entry too, Nexus had auto-blocked
archive.ubuntu.com, and apt fails the whole update on one bad source.

Three holes, three plugs:

- One sources list per INFINITO_DISTRO under compose/package-cache/apt/,
  selected by the compose overrides. A Debian runner no longer fetches
  an Ubuntu suite it has no use for. The non-apt distros get an empty
  file so the bind mount has a source to point at.
- autoBlock off. While a remote is auto-blocked Nexus answers `404
  Remote Auto Blocked` to every client instead of falling back to the
  copy it already has cached.
- Mirror failover in the frontend. Every apt suite gets a second proxy
  repo on an independent upstream; a 5xx from the primary re-runs the
  request against it. Nexus has no group repository type for apt, so
  the retry lives in nginx.

Measured on a live Nexus 3.91.1: dead remote without a cached copy
answers 502, with a cached copy 200 regardless of metadataMaxAge. The
frontend serves 149 kB of real bookworm `Release` from the mirror repo
when the primary is dead, and the new regex locations produce upstream
request lines byte-identical to the `rewrite … break` form they replace,
including `%3a` epochs in pool paths.

INFINITO_CACHE_PACKAGE_APT_LIST is gone; the mount interpolates
INFINITO_DISTRO directly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 19:33:04 +02:00
..

Package-Cache Wiring 📦

Client-side configuration bind-mounted into the infinito runner so that pip, npm, and apt route through the Sonatype Nexus 3 OSS pull-through proxy.

For services, activation, coverage, and operations of the local cache stack, see cache.md.

Files 📄

  • pip.conf: pip configuration. Mounted at /etc/pip.conf. Routes pip through pypi-proxy.
  • npmrc: npm configuration. Mounted at /root/.npmrc. Routes npm through npm-proxy.
  • apt/<distro>.list: apt sources, one file per INFINITO_DISTRO. The matching file is mounted at /etc/apt/sources.list.d/package-cache.list. apt/debian.list routes apt through apt-debian, apt/ubuntu.list through apt-ubuntu; the pacman/dnf distros get an empty file, because apt-get update fails as a whole on a single unreachable source and must not carry a foreign distro's entry.