Skip to content

ci: Implement Replay Checker #1366

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 94 commits into from
Aug 4, 2025

Conversation

helmutbuhler
Copy link

@helmutbuhler helmutbuhler commented Jul 26, 2025

Fixes #1201
Initial attempt here: #1239

This PR adds automatic checking of replays for compatibility to CI.
It also adds an additional configuration vc6-releaselog to CMakePresets.json. It compiles the game with optimizations, logging and crashing enabled. That configuration is still compatible and also checked in the CI.

It also adds two more headless checks:

  • One disables a dialog that appears when the music cannot be loaded (not included in the gamedata files CI uses)
  • The other is needed because MessageBoxWrapper since a recent change no longer checks whether there is a window in the current thread.

The CI internally downloads some gamedata files which are needed to simulate the replay. These gamedata files are trimmed of files which are not needed in headless mode (audio, textures, GUI). They are also encrypted so only the CI runner can access them.

The replays and maps the CI uses to check are also added here to the repository.

The new replaycheck job happens after the VC6 build is complete. Luckily, the VC6 build is currently much faster than the VS22 build and as such the replaycheck and the VS22 build can run in parallel. This PR therefore doesn't increase the runtime of CI much (about a minute).

Before this can be merged, these things still need to happen:

@helmutbuhler
Copy link
Author

Ok, I updated it again. The CI now uses the replays and maps here: https://github.com/TheSuperHackers/GeneralsReplays
The gamedata in S3 has also been renamed and split into two archives.

@xezon
Copy link

xezon commented Aug 3, 2025

One or more required secrets are not set or are empty. R2_ACCESS_KEY_ID: False, R2_SECRET_ACCESS_KEY: False, R2_ENDPOINT_URL: False

@tintinhamans Can you supply these things whereever they need to go?

@helmutbuhler
Copy link
Author

One or more required secrets are not set or are empty. R2_ACCESS_KEY_ID: False, R2_SECRET_ACCESS_KEY: False, R2_ENDPOINT_URL: False

@tintinhamans Can you supply these things whereever they need to go?

They are already in this repository. It's just that they are hidden for pending PRs for security reasons. That's why it's failing currently. Once this PR is merged, all CI Jobs will work. Also all Pending PRs will work from then on, because the data will be in the cache.
If you want to inspect how the run will look, you can look here: helmutbuhler#1

@helmutbuhler helmutbuhler added the Build Anything related to building, compiling label Aug 3, 2025
Copy link

@xezon xezon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor comments

@helmutbuhler
Copy link
Author

Implemented all suggestions

@xezon xezon changed the title feat(ci): Add Replay Checker in CI ci: Implement Replay Checker Aug 3, 2025
@xezon
Copy link

xezon commented Aug 3, 2025

GitHub says "This branch cannot be rebased due to conflicts". Cannot merge?

@helmutbuhler
Copy link
Author

Just pushed merge of main into this PR. Maybe that helps.

@helmutbuhler helmutbuhler merged commit dec4d7d into TheSuperHackers:main Aug 4, 2025
15 of 17 checks passed
@Mauller
Copy link

Mauller commented Aug 4, 2025

This got merged with a bad commit title

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Build Anything related to building, compiling Test Is testing related
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Check replays in CI
7 participants