Continuous integration
From Unvanquished
Continuous integration (CI) refers to the automated builds that run each time someone opens or modifies a pull request against, or modifies the code of, the Unvanquished and Daemon source code repositories on GitHub.
We use the following CI services:
- Appveyor, for building with MSVC on Windows. Its configuration is found in the file
.appveyor.yml
in the repository root. - Azure Pipelines. Its configuration is found in the file
azure-pipelines.yml
in the repository root. It handles Mac native builds on macOS 14.x and Linux native and NaCl builds on Ubuntu 20.04 (Focal). - GitHub CodeQL. Its configuration is found in the file
.github/workflows/codeql.yml
in the repository. Its purpose is to scan the source code for vulnerabilities, and for that purpose it starts by building the source tree using the latest LTS Ubuntu distribution provided by the platform (Ubuntu 22.04) and the default compiler of this platform.
In some Daemon builds, we run the unit tests. These builds have been configured to use the Release configuration so that the unit tests are closer to production builds.
Build matrix
Dæmon engine | ||||||||
---|---|---|---|---|---|---|---|---|
Service | Host | Target | Compiler | Generator | Build Type | WERROR | PCH | Unit tests |
Appveyor | Windows amd64 | Windows amd64 | VS 2019 | Visual Studio | Release | Yes | No | Yes |
Appveyor | Windows amd64 | Windows i686 | VS 2019 | Visual Studio | Release | Yes | No | Yes |
Azure Pipelines | Ubuntu-20.04 amd64 | Windows amd64 | MinGW 9.3 | Ninja | Debug | Yes | No | No |
Azure Pipelines | Ubuntu-20.04 amd64 | Linux amd64 | GCC 9.4 | Ninja | Release | Yes | No | Yes |
Azure Pipelines | Ubuntu-20.04 amd64 | Linux amd64 | Clang 11.0 | Ninja | Release | Yes | No | Yes |
Azure Pipelines | macOS-14 amd64 | macOS amd64 | AppleClang 15.0 | Make | Release | Yes | No | Yes |
GitHub Actions CodeQL | ubuntu-latest | Linux amd64 | GCC (floating) | Ninja | Release | No | Yes | No |
Unvanquished game | |||||||
---|---|---|---|---|---|---|---|
Service | Host | Target | Compiler | Generator | Build Type | WERROR | PCH |
Appveyor | Windows amd64 | Windows i686 DLL | VS 2019 | NMake | Debug | Yes | No |
Azure Pipelines | Ubuntu-20.04 amd64 | Linux amd64 DLL | GCC 8.4 | Ninja | Debug | Yes | No |
Azure Pipelines | Ubuntu-20.04 amd64 | Linux amd64 DLL | Clang 11.0 | Ninja | Debug | Yes | No |
Azure Pipelines | Ubuntu-20.04 amd64 | NaCl all NEXE | PNaCl Clang 3.6 | Ninja | Debug | Yes | No |
Azure Pipelines | macOS-14 amd64 | macOS amd64 DLL | AppleClang 15.0 | Make | Debug | Yes | No |
GitHub Actions CodeQL | ubuntu-latest | Linux amd64 DLL+EXE | GCC (floating) | Ninja | Release | No | Yes |
“WERROR” indicates whether the USE_WERROR
option is on, which gives a failing building build status if there are warnings in our code. Note that USE_WERROR
only applies to ”our” code in src/
, so you may still see warnings from stuff in libs/
.
“PCH” indicates whether the precompiled header is enabled.