Files
libbpf/ci/rootfs/s390x-self-hosted-builder

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=<owner>/<name>
access_token=<ghp_***>
runner_name=<hostname>

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 <service name>

In order to get logs for service:

$ journalctl -u <service name>

In order to check which containers are currently active:

$ sudo docker ps