Skip to content

Epitech submission

A push to master in either source repository triggers the centralized assembly workflow, .github/workflows/epitech-mirror.yml, in Aegis2D. You can also trigger it manually from Actions. The respective workflow files must be published on master in both repositories before synchronization can work.

The official repository receives the following files on main:

  • engine/: committed Aegis2D sources;
  • game/: committed game sources;
  • CMakeLists.txt: configuration that uses only the bundled engine;
  • source-revisions.json: exact commit SHAs from both source repositories.

Setup

Create an Actions secret named EPITECH_MIRROR_TOKEN in each source repository. The token's account must be able to read both private repositories, send a repository_dispatch event to the engine repository, and push to the Epitech repository. A classic personal access token with the repo scope, authorized for both organizations (including SSO where applicable), supports this setup across organizations. Do not put the token in repository files or messages.

Secret settings:

  • https://github.com/Aegis2D-Dev/aegis2d/settings/secrets/actions
  • https://github.com/Aegis2D-Dev/project-rtype/settings/secrets/actions

Organization policies may restrict personal access tokens. The built-in GITHUB_TOKEN cannot access the other private repositories. The synchronization token does not need the workflow scope because source workflows are excluded from the submission. Write access to the target branch remains subject to Epitech's branch protection rules.

Validation and publication

CI builds the assembled project in Release mode on Linux and runs the minimal main program. A separate job publishes only the validated artifact. This checks compilation and integration; it does not yet test gameplay. Update the execution step when the program starts opening a window or running a persistent game loop.

Publication creates a regular commit without force-pushing. Workflow runs are serialized. Synchronization manages only engine/, game/, CMakeLists.txt, and source-revisions.json; other files in the official repository are preserved. The first run refuses to overwrite existing managed paths without an ownership marker. Source deletions are propagated within the two managed directories. Source .github/ directories and Git metadata are excluded. Running synchronization again without changes does not create an additional commit.

The Epitech repository keeps its own submission history; it does not merge the Git histories of the two source repositories. The manifest identifies the source commits, which can be used to look up their authors.

To build the submission, run cmake -S . -B build, then cmake --build build. CPM still downloads public dependencies (SDL, GLAD, Asio); access to the private source repositories is not required. Python/Jinja2 and system prerequisites, including SDL's Linux X11 development libraries, are still required to build the client.

Git LFS and submodules are not supported by this git archive export. If they are introduced for assets, update the export before their first submission.