Continuous integration

From Unvanquished
Jump to: navigation, search

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 Action Host Target Compiler Generator Build Type WERROR PCH
Appveyor Build+test Windows amd64 Windows amd64 VS 2022 Visual Studio Release Yes No
GitHub Actions Build Ubuntu 24 amd64 Windows amd64 MinGW 13.0 Ninja Debug Yes No
GitHub Actions Build+test Ubuntu 24 amd64 Linux amd64 GCC 13.3 Ninja Release Yes No
GitHub Actions Build+test Ubuntu 24 amd64 Linux amd64 Clang 18.1 Ninja Release Yes No
GitHub Actions Build+test macOS 15 amd64 macOS amd64 AppleClang 17.0 Make Release Yes No
GitHub Actions CodeQL ubuntu-latest Linux amd64 GCC (floating) Ninja Release No Yes


Unvanquished game
Service Action Host Target Compiler Generator Build Type WERROR PCH
Appveyor Build Windows amd64 Windows i686 DLL VS 2019 NMake Debug Yes No
GitHub Actions Build Ubuntu 22 amd64 Linux amd64 DLL GCC 11.4 Ninja Debug Yes No
GitHub Actions Build Ubuntu 22 amd64 Linux amd64 DLL Clang 14.0 Ninja Debug Yes No
GitHub Actions Build Ubuntu 22 amd64 NaCl all NEXE PNaCl Clang 3.6 Ninja Debug Yes No
GitHub Actions Build macOS 15 amd64 macOS amd64 DLL AppleClang 17.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.