BigWheels uses GitHub Actions for its CI and testing solution.
The following tests are run as part of every PR submission:
- On Windows:
- Full build of BigWheels, all shader targets, and DX12 samples with Visual Studio 2022.
- Unit tests.
- Some DX12 samples are run in headless mode using DX12's software renderer.
- On Linux:
- Full build of BigWheels, SPIR-V shaders, and Vulkan samples.
- Unit tests.
- Some Vulkan samples are run with a virtual framebuffer (using
xvfb
) and using Mesa's Lavapipe as the software renderer.
- On Linux, build APKs for mobile.
- Code formatting check that ensures code is formatted using
clang-format
, usingclang-format
version 16.
The samples run as part of the runtime tests produce screenshots that are then uploaded as GitHub artifacts. You can retrieve them by navigating to a successful CI run's page and then downloading the screenshots
artifact.
Testing workflows are found under the .github/workflows
folder in the repository.
We use the freely-available GitHub-hosted runners. There may be the need of updating dependencies or other settings used by the workflows as GitHub updates their runners, or as BigWheels' needs change.
Common maintenance tasks:
- Updating the runner's images: we are currently using
ubuntu-20.04
andwindows-2022
. - Updating the Vulkan SDK and its components that are downloaded and installed as part of the workflows. This should be a simple change of the version string in the workflows' files:
- Updating the Windows dependencies, mainly the Windows SDK.
- Maintaining the CMake build flags used to build BigWheels (Linux, Windows).
- Curating the list of samples that are run (Linux, Windows). Note that we strive to maintain a healthy balance between test coverage and runtime/resource usage minimization of the CI runners.