# IBM Z self-hosted builder libbpf CI uses an IBM-provided z15 self-hosted builder. There are no IBM Z builds of GitHub (GH) Actions runner, and stable qemu-user has problems with .NET apps, so the builder runs the x86_64 runner version with qemu-user built from the master branch. We are currently supporting runners for the following repositories: * libbpf/libbpf * kernel-patches/bpf * kernel-patches/vmtest Below instructions are directly applicable to libbpf, and require minor modifications for kernel-patches repos. Currently, qemu-user-static Docker image is shared between all GitHub runners, but separate actions-runner-\* service / Docker image is created for each runner type. ## Configuring the builder. ### Install prerequisites. ``` $ sudo apt install -y docker.io # Ubuntu ``` ### Add services. ``` $ sudo cp *.service /etc/systemd/system/ $ sudo systemctl daemon-reload ``` ### Create a config file. ``` $ sudo tee /etc/actions-runner-libbpf repo=/ access_token= ``` Access token should have the repo scope, consult https://docs.github.com/en/rest/reference/actions#create-a-registration-token-for-a-repository for details. ### Autostart the x86_64 emulation support. This step is important, you would not be able to build docker container without having this service running. If container build fails, make sure service is running properly. ``` $ sudo systemctl enable --now qemu-user-static ``` ### Autostart the runner. ``` $ sudo systemctl enable --now actions-runner-libbpf ``` ## Rebuilding the image In order to update the `iiilinuxibmcom/actions-runner-libbpf` image, e.g. to get the latest OS security fixes, use the following commands: ``` $ sudo docker build \ --pull \ -f actions-runner-libbpf.Dockerfile \ -t iiilinuxibmcom/actions-runner-libbpf \ . $ sudo systemctl restart actions-runner-libbpf ``` ## Removing persistent data The `actions-runner-libbpf` service stores various temporary data, such as runner registration information, work directories and logs, in the `actions-runner-libbpf` volume. In order to remove it and start from scratch, e.g. when upgrading the runner or switching it to a different repository, use the following commands: ``` $ sudo systemctl stop actions-runner-libbpf $ sudo docker rm -f actions-runner-libbpf $ sudo docker volume rm actions-runner-libbpf ``` ## Troubleshooting In order to check if service is running, use the following command: ``` $ sudo systemctl status ``` In order to get logs for service: ``` $ journalctl -u ``` In order to check which containers are currently active: ``` $ sudo docker ps ```