1. Custom CI Runner

We have created a custom CI runner set up with real RISC-V hardware so that we can run CI tests even on platforms that don’t have a good QEMU-based simulator. This document details how this runner was setup so that it can be replicated or extended with future hardware platforms.

1.1. Setup

On the machine which has the RISC-V board connected, first create a new user and assign them to any groups they will need in order to talk to the hardware.

sudo adduser runner
sudo usermod -aG disks runner
sudo usermod -aG dialout runner
...
# To allow user systemd units to run even when user is not logged in
sudo loginctl enable-linger runner

Then, login as that user and follow these instructions for creating a new custom runner. When setting up the custom runner, you will want to add any tags as necessary to describe the hardware that this runner has access to. Then, optionally (but recommended), create a new systemd unit file to automatically start the runner on machine boot.

mkdir -p /home/runner/.config/systemd/user
cat <<EOF > /home/runner/.config/systemd/user/runner.service
[Service]
ExecStart=/home/runner/actions-runner/run.sh

[Install]
WantedBy=default.target
EOF

systemctl --user enable runner
systemctl --user start runner