Skip to content

ci: build and test the project in CI - #6

Merged
Periicles merged 5 commits into
mainfrom
feat/ci
Jun 16, 2026
Merged

ci: build and test the project in CI#6
Periicles merged 5 commits into
mainfrom
feat/ci

Conversation

@Periicles

Copy link
Copy Markdown
Owner

Stacked on the sanitizer/test work that is already on main (#3/#4) and on #5.

Why

The workflow only checked size and coding style — it never built the code or ran
the tests, and it still assumed the pre-migration toolchain. A green pipeline
therefore proved nothing about whether the project compiled or passed its tests.

What

  • New build_and_test job:
    • installs the build deps + libcriterion-dev,
    • builds and installs SFML 3 + CSFML 3 from source (the Ubuntu packages are
      still CSFML 2, which is incompatible with the migrated code), cached by
      version,
    • runs make then make tests_run.
  • push_to_mirror now depends on both check_coding_style and build_and_test,
    so a broken build is never mirrored to the school repo.
  • size and check_coding_style jobs are unchanged.

Note

The CSFML-3-from-source step may need a follow-up tweak on its first real run
(the runners can't be exercised locally). Coverage in CI is still pending the
duplicate-basename fix.

The workflow only checked repository size and coding style; it never
built the code or ran the tests, and it predates the CSFML 3 migration.

Add a build_and_test job that installs the SFML 3 / CSFML 3 toolchain
(built from source and cached, since the Ubuntu packages are still
CSFML 2), compiles the project with `make`, and runs the criterion suite
with `make tests_run`. The mirror step now waits on both the coding-style
and build/test jobs so a broken build is never mirrored. The existing
size and coding-style jobs are unchanged.
The check_coding_style job pulled ghcr.io/epitech/coding-style-checker,
which no longer exists (manifest unknown) — the job had been failing on
infrastructure, not on the code. Epitech replaced that tool with Banana.

Add a coding_style job that installs Banana from the epitech PPA, runs
the epiclang plug-in over the sources (filtered to project files; CSFML 3
headers are fetched so the includes resolve) and runs banana-check-repo
for the repository rules. The mirror now waits on this job and on
build_and_test.
banana-check-repo scans the working directory, so cloning CSFML into the
checkout made it flag every CSFML header as an invalid file name (C-O4).
Clone the header tree into $HOME instead, leaving the repository tree
clean for the repository-rule check.
The push_to_mirror job ran on every push and failed with "no path
specified" whenever vars.MIRROR_URL is unset (any fork without the
Epitech mirror configured). Guard it on a non-empty MIRROR_URL so it is
skipped instead of failing; it still runs once the mirror variable and
SSH key are set.
@Periicles
Periicles merged commit 868a00f into main Jun 16, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant