GitHub Actions: Test project exporting on CI#109146
Conversation
976845a to
cc2c229
Compare
779f6ad to
9b4c6c6
Compare
|
This is fantastic for testing purposes, and already coming along really nicely; great job! Though, the test project itself shouldn't be in the repo. It's not something to worry about during this testing phase, but we should do something similar to the regression test project where it's downloaded from a remote location |
00c8440 to
72a215a
Compare
e6cd321 to
4da0e30
Compare
|
Anything that can be done to help move this one forward? I'd love to see this merged in some form for 4.6, since it would've helped catch one or two of the regressions that I ran into during the last beta. |
4da0e30 to
ae3cd86
Compare
I'll take a look at it again next week. Once I get CI to pass, we can look into creating a new repository in the @godotengine organization then update this PR to remove the test project from it (and make it clone the other repository instead). There's already https://github.com/godotengine/godot-tests, but we don't seem to be using the tests from that repository anywhere currently. The alternative is to modify https://github.com/godotengine/regression-test-project to include two projects side-by-side (the existing project + the new one). What do you think? |
I guess using that repository makes sense. Eventually we might want to run more of this kind of integration tests which could be hosted in that repo. The existing tests may or may not be obsolete but you can likely replace the |
ae3cd86 to
24c1a8a
Compare
|
I'm getting a CI failure due to sanitizers on the regression test project (not the project added by this PR). How come it doesn't occur on |
7fa346c to
6bd65f7
Compare
527f6ff to
4a012e6
Compare
|
CI is passing now, so I've opened a PR on godot-tests with the test project: Once the above PR is merged, I'll change this PR to download the test project from godot-tests instead of embedding it here. |
4a012e6 to
93c23a1
Compare
|
@Calinou Any plans on resuming the GDExtension part of this if/when this is merged, or did you find yourself stuck on the dynamic library loading issue you were having? |
Yes, I'll look into it once this is merged. I've tried to use I've reverted the PR to use |
Just a reminder that this still needs to be done before merging. |
93c23a1 to
6d8d124
Compare
|
Seems like the project is using an outdated export preset: |
|
Was there anything in particular holding this up? We got hit with yet another export determinism issue (#115914), so I'd love to see some sort of export determinism check added to CI, which this project would seem to be a good candidate for. I'd be happy to take that on once this is merged. |
This allows finding issues in headless project export early on, including when exporting for a dedicated server. We also use this opportunity to check whether the audiovisual output between the project being run from its files and the exported PCK matches (it should always be a perfect match, assuming the same GPU is used for both runs). This can be used to catch audiovisual discrepancies, which could indicate a bug in the export process.
6d8d124 to
217d93a
Compare
I've rebased the PR and pushed a tentative CI fix. It should be good to merge when CI passes. Edit: CI is failing due to GitHub having trouble right now. Re-running CI tomorrow should make it work.
Sure, feel free to open a PR once this one is merged 🙂 |
|
Thanks! |
|
Hi! Does this fully address the improvements described in the priorities page? or is more work to be done? Thanks! |
There's still more work to be done, which is why I left that priority in when I updated the page: Some limitations (like the shader baker not working in headless builds) can't be fully addressed by design due to requiring GPU access, but perhaps we can document a workaround for them by running the editor with llvmpipe or SwiftShader (and keeping a X11/Wayland session active if on a server). Implementing support for offscreen rendering will make the process a bit nicer (as no window would spawn when exporting a project in non-headless mode), but it's not strictly required. |
This allows finding issues in headless project export early on, including when exporting for a dedicated server.
We also use this opportunity to check whether the audiovisual output between the project being run from its files and the exported PCK matches (it should always be a perfect match, assuming the same GPU is used for both runs). This can be used to catch audiovisual discrepancies, which could indicate a bug in the export process. This also tests Movie Maker mode functionality while we're at it.
The test project is currently part of the main repository, so I've attempted to minimize the file size while making use of as many Godot features as possible. We could move this test project to a separate repository, but this would increase the complexity of the setup and make it harder for contributors to test this project locally (as well as further improve it).
This export test is performed on the Linux Editor w/ Mono job, which will allow for testing C# (not implemented in this PR yet).
The development of this PR has already uncovered several bugs so far:
--headlessmode #109177Preview
The project features:
C#andGDExtension C++ using godot-cpp.Details
OBJ scene/mesh importVoxelGI exportAudio playbackTODO
For a future PR (due to the complexity):