| # 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. |
| |
| ## GitHub actions |
| |
| The configuration files for GitHub actions are located in |
| `.github/workflows`. Here, all [images](#docker-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. |