Skip to content

Fix broken Makefile CI workflow #100

Description

@PRAteek-singHWY

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 RunStop 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions