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.