1.8 KiB
Meson CI setup
This document is aimed for Meson contributors and documents the CI setup used for testing Meson itself. The Meson project uses multiple CI platforms for covering a wide range of target systems.
Travis CI
The travis configuration file is the .travis.yml
in the
the project root. This platform tests cross compilation and
unity builds on a linux docker image and
on OSX.
GitHub actions
The configuration files for GitHub actions are located in
.github/workflows
. Here, all images
are tested with the full run_tests.py
run. Additionally,
some other, smaller, tests are run.
Docker images
The Linux docker images are automatically built and
uploaded by GitHub actions. An image rebuild is triggerd
when any of the image definition files are changed (in
ci/ciimage
) in the master branch. Additionally, the
images are also updated weekly.
Each docker image has one corresponding dirctory in
ci/ciimage
with an image.json
and an install.sh
.
Image generation
There are no manual Dockerfiles. Instead the Dockerfile is
automatically generated by the build.py
script. This is
done to ensure that all images have the same layout and can
all be built and tested automatically.
The Dockerfile is generated from the image.json
file and
basically only adds a few common files and runs the
install.sh
script which should contain all distribution
specific setup steps. The common.sh
can be sourced via
source /ci/common.sh
to access some shared functionalety.
To generate the image run build.py -t build <image>
. A
generated image can be tested with build.py -t test <image>
.
Common image setup
Each docker image has a /ci
directory with an
env_vars.sh
script. This script has to be sourced before
running the meson test suite.