Skip to content

Continuous Integration

Kai Pastor edited this page Apr 11, 2019 · 27 revisions

Build Status

The OpenOrienteering Mapper and Superbuild Github repositories use continuous integration via Azure Pipelines on:

https://dev.azure.com/OpenOrienteering/Mapper

Builds are triggered automatically for commits to regular branches and for pull requests. Pull requests build results are reported back to Github as "Check" results.

"Collaborators" may trigger builds for pull requests manually from comments with the following command:

/AzurePipelines run

CI Configurations

Build Android armv7 macOS Linux clazy Linux coverage Linux MinGW Windows mingw32 Windows mingw64
Target OS Android macOS Ubuntu 16.04 Ubuntu 16.04 Windows Windows Windows
Arch arm v7 x64 x64 x64 x64 x32
Host OS macOS 10.13 macOS 10.13 Ubuntu 16.04 Ubuntu 16.04 Ubuntu 16.04 Windows 2019 Windows 2019
Compiler clang AppleClang clazy 1.5 gcc 5.4.0 gcc 5.3.1 gcc 7.4.0 gcc 7.4.0
SDK Arm v7 XCode 10.1 Ubuntu MinGW MSYS2 MSYS2
Config Release Debug Release Release + Coverage Release MSYS2 RelWithDebInfo
Qt 5.12 5.12 5.12 5.12 5.12 5.12 5.12
Tests no yes yes yes no yes yes
Sanitzer no no no ubsan no no no
Context Superbuild Superbuild Superbuild Superbuild Superbuild mingw32 mingw64
Licensing Superbuild Superbuild Superbuild Superbuild Superbuild ? ?
Packaging APK DMG deb deb ZIP ZIP ZIP

Testing the binary artifacts

Android

The CI build creates an unsigned APK. Before installing to a device, it must be signed. Developers may use their developer certificate, which is usually protected by the passphrase android:

$ SDK_APTH/build-tools/VERSION/apksigner sign --ks ~/.android/debug.keystore install-release-unsigned.apk

CI Implementation Notes

CI scripts are stored in the ci directory. Each pipeline has some configuration variables which may be edited permanently or when queueing manually.

The Superbuild repository CI build creates "Pipeline Artifacts" with all dependencies for building Mapper on macOS, Ubuntu 16.04 and MinGW. The Mapper repository CI downloads these artifacts, thus limiting the build time to Mapper itself. Tests are run for the native builds (macOS, Ubuntu). The actual "buildId" of the superbuild pipeline artifacts is a configuration variable in the Mapper pipeline, and the respective Superbuild pipeline build should be marked for retention until migrating to a new build.

Clone this wiki locally