CI CD - lulu98/projects-with-sel4 GitHub Wiki
CI/CD
As the CICD platform GitHub Actions is used, since it integrates easily with a GitHub project. We basically have two pipeline stages (build, test) in one since the dependencies take so long to pull and GitHub caching does not work properly (at least for me). The most time is spent on pulling Docker images as well as the Haskell compiler.
Supported platforms
- Zynq7000
- RPi4
build-dependencies
directory
This repository helps in building and testing applications by spinning up a Docker container that already has all the dependencies pre-installed.
Build stage
The CICD pipeline executes the src/build.sh
script which builds all CAmkES applications in src/main/projects/my_projects/
for all platforms. For the Zynq7000 the SIMULATION
flag is turned on in order to be executed in QEMU.
Test stage
The CICD pipeline executes the src/test.sh
script which builds all CAmkES applications in src/main/projects/my_projects/
for all platforms as well as executes tests located in src/test/unit_tests/
. For every application there exists a test in src/test/unit_tests/
. This requires some patching of the simulate
python script that gets generated when you build for a platform with the SIMULATION
flag activated. When acquiring the QEMU simulate command via the patched simulate
script, the test script will then instrument the QEMU execution via pexpect
. It is recommended to create a test script for every application that is created.
TODO
Since there is no QEMU support for RPi4, we can not emulate the application and execute the test scripts that we wrote for the Zynq7000
platform. An idea would be to hook up a self-hosted runner in GitHub actions and operate on the real board.