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 11.x and Linux native and NaCl builds on Ubuntu 20.04 (Focal).

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 NMake Release Yes off Yes
Appveyor Windows amd64 Windows i686 VS 2019 NMake Release Yes off Yes
Azure Pipelines Ubuntu-20.04 amd64 Windows amd64 Mingw 9.3 Ninja Release Yes off No
Azure Pipelines Ubuntu-20.04 amd64 Linux amd64 GCC 9.4 Ninja Release Yes off Yes
Azure Pipelines Ubuntu-20.04 amd64 Linux amd64 Clang 11.0 Ninja Release Yes off Yes
Azure Pipelines macOS-11 amd64 macOS amd64 AppleClang 13.0 Make Release Yes No Yes


Unvanquished game
Service Host Target Compiler Generator Build Type WERROR PCH
Appveyor Windows amd64 Windows i686 DLL VS 2019 NMake Debug Yes off
Azure Pipelines Ubuntu-20.04 amd64 Linux amd64 DLL GCC 8.4 Ninja Debug Yes off
Azure Pipelines Ubuntu-20.04 amd64 Linux amd64 DLL Clang 11.0 Ninja Debug Yes off
Azure Pipelines Ubuntu-20.04 amd64 NaCl all NEXE PNaCl Clang 3.6 Ninja Debug Yes off
Azure Pipelines macOS-11 amd64 macOS amd64 DLL AppleClang 13.0 Make Debug Yes No


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