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 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.