The Makefile CI workflow currently reports a green check on every push, but if you look at what it's doing, it isn't really testing the project — it's installing some packages and then racing through make run / make stop against tooling that can't work in a hosted runner.
Here's what's wrong, in the order it matters:
make run can't start any service in CI.
make run delegates to runner.sh, which on Linux only knows how to spawn services inside gnome-terminal, konsole, xfce4-terminal, or xterm (runner.sh:20-32). None of those are present on a GitHub-hosted Ubuntu runner, so the script falls through to a silent background fallback and the step exits 0 without any APIS service actually starting. The "Run" check is decorative.
Even if it started, make stop runs immediately after.
The workflow goes Run → Stop back-to-back with no readiness wait, no health probe, no sleep. So even if a service did come up, it'd get torn down before it finished initialising — and CI can't tell a startup failure from a normal shutdown.
The MongoDB install path is broken on every modern runner.
The workflow uses apt-key adv --keyserver … (removed in Ubuntu 22.04+) and points at the bionic/mongodb-org/4.0 repo from a focal runner. On top of that, MongoDB 4.0 has been end-of-life since April 2022. The docs (docs/INSTALL_DOCKER.md §2.2) already document the modern signed-by keyring + MongoDB 7.0 pattern — the workflow just never got updated to match.
The runner image is on its way out.
runs-on: ubuntu-20.04 (makefile.yml:12) — GitHub has scheduled the 20.04 image for removal. Existing workflows will start failing once that lands.
What "fixed" looks like
- CI exercises
make build reliably on a current Ubuntu runner.
- The
Run / Stop steps either go away (build-only CI) or are replaced with a path that actually starts services headlessly and waits for them before stopping. The current race is worse than no test.
- MongoDB install uses the same modern
signed-by keyring + supported version that docs/INSTALL_DOCKER.md already documents.
References
.github/workflows/makefile.yml:12-39
runner.sh:17-37
docs/INSTALL_DOCKER.md §2.2
The
Makefile CIworkflow currently reports a green check on every push, but if you look at what it's doing, it isn't really testing the project — it's installing some packages and then racing throughmake run/make stopagainst tooling that can't work in a hosted runner.Here's what's wrong, in the order it matters:
make runcan't start any service in CI.make rundelegates torunner.sh, which on Linux only knows how to spawn services insidegnome-terminal,konsole,xfce4-terminal, orxterm(runner.sh:20-32). None of those are present on a GitHub-hosted Ubuntu runner, so the script falls through to a silent background fallback and the step exits 0 without any APIS service actually starting. The "Run" check is decorative.Even if it started,
make stopruns immediately after.The workflow goes
Run→Stopback-to-back with no readiness wait, no health probe, nosleep. So even if a service did come up, it'd get torn down before it finished initialising — and CI can't tell a startup failure from a normal shutdown.The MongoDB install path is broken on every modern runner.
The workflow uses
apt-key adv --keyserver …(removed in Ubuntu 22.04+) and points at thebionic/mongodb-org/4.0repo from a focal runner. On top of that, MongoDB 4.0 has been end-of-life since April 2022. The docs (docs/INSTALL_DOCKER.md§2.2) already document the modernsigned-bykeyring + MongoDB 7.0 pattern — the workflow just never got updated to match.The runner image is on its way out.
runs-on: ubuntu-20.04(makefile.yml:12) — GitHub has scheduled the 20.04 image for removal. Existing workflows will start failing once that lands.What "fixed" looks like
make buildreliably on a current Ubuntu runner.Run/Stopsteps either go away (build-only CI) or are replaced with a path that actually starts services headlessly and waits for them before stopping. The current race is worse than no test.signed-bykeyring + supported version thatdocs/INSTALL_DOCKER.mdalready documents.References
.github/workflows/makefile.yml:12-39runner.sh:17-37docs/INSTALL_DOCKER.md§2.2