From 9167308b4a7f7de7ffb1b40f2880f4d45844551e Mon Sep 17 00:00:00 2001 From: Manu Bretelle Date: Wed, 16 Nov 2022 13:53:00 -0800 Subject: [PATCH] ci: remove s390x-self-hosted-builder from libbpf/libbpf Those were moved to libbpf/ci: https://github.com/libbpf/ci/tree/master/rootfs/s390x-self-hosted-builder Signed-off-by: Manu Bretelle --- ci/rootfs/s390x-self-hosted-builder/README.md | 108 ------------------ .../actions-runner-libbpf.Dockerfile | 54 --------- .../actions-runner-libbpf.service | 24 ---- .../fs/usr/bin/actions-runner | 43 ------- .../fs/usr/bin/entrypoint | 35 ------ .../qemu-user-static.service | 11 -- 6 files changed, 275 deletions(-) delete mode 100644 ci/rootfs/s390x-self-hosted-builder/README.md delete mode 100644 ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.Dockerfile delete mode 100644 ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.service delete mode 100755 ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/actions-runner delete mode 100755 ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/entrypoint delete mode 100644 ci/rootfs/s390x-self-hosted-builder/qemu-user-static.service diff --git a/ci/rootfs/s390x-self-hosted-builder/README.md b/ci/rootfs/s390x-self-hosted-builder/README.md deleted file mode 100644 index 3e70ae8..0000000 --- a/ci/rootfs/s390x-self-hosted-builder/README.md +++ /dev/null @@ -1,108 +0,0 @@ -# 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= -runner_name= -``` - -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 -``` diff --git a/ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.Dockerfile b/ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.Dockerfile deleted file mode 100644 index 5b062be..0000000 --- a/ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -# Self-Hosted IBM Z Github Actions Runner. - -# Temporary image: amd64 dependencies. -FROM amd64/ubuntu:20.04 as ld-prefix -ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get -y install ca-certificates libicu66 libssl1.1 - -# Main image. -FROM s390x/ubuntu:20.04 - -# Packages for libbpf testing that are not installed by .github/actions/setup. -ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get -y install \ - bc \ - bison \ - cmake \ - cpu-checker \ - curl \ - wget \ - flex \ - git \ - jq \ - linux-image-generic \ - qemu-system-s390x \ - rsync \ - software-properties-common \ - sudo \ - tree \ - zstd \ - iproute2 \ - iputils-ping - -# amd64 dependencies. -COPY --from=ld-prefix / /usr/x86_64-linux-gnu/ -RUN ln -fs ../lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /usr/x86_64-linux-gnu/lib64/ -RUN ln -fs /etc/resolv.conf /usr/x86_64-linux-gnu/etc/ -ENV QEMU_LD_PREFIX=/usr/x86_64-linux-gnu - -# amd64 Github Actions Runner. -ARG version=2.298.2 -RUN useradd -m actions-runner -RUN echo "actions-runner ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers -RUN echo "Defaults env_keep += \"DEBIAN_FRONTEND\"" >>/etc/sudoers -RUN usermod -a -G kvm actions-runner -USER actions-runner -ENV USER=actions-runner -WORKDIR /home/actions-runner -RUN curl -L https://github.com/actions/runner/releases/download/v${version}/actions-runner-linux-x64-${version}.tar.gz | tar -xz -VOLUME /home/actions-runner - -# Scripts. -COPY fs/ / -ENTRYPOINT ["/usr/bin/entrypoint"] -CMD ["/usr/bin/actions-runner"] diff --git a/ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.service b/ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.service deleted file mode 100644 index 88e0237..0000000 --- a/ci/rootfs/s390x-self-hosted-builder/actions-runner-libbpf.service +++ /dev/null @@ -1,24 +0,0 @@ -[Unit] -Description=Self-Hosted IBM Z Github Actions Runner -Wants=qemu-user-static -After=qemu-user-static -StartLimitIntervalSec=0 - -[Service] -Type=simple -Restart=always -ExecStart=/usr/bin/docker run \ - --device=/dev/kvm \ - --env-file=/etc/actions-runner-libbpf \ - --init \ - --interactive \ - --name=actions-runner-libbpf \ - --rm \ - --volume=actions-runner-libbpf:/home/actions-runner \ - iiilinuxibmcom/actions-runner-libbpf -ExecStop=/bin/sh -c "docker exec actions-runner-libbpf kill -INT -- -1" -ExecStop=/bin/sh -c "docker wait actions-runner-libbpf" -ExecStop=/bin/sh -c "docker rm actions-runner-libbpf" - -[Install] -WantedBy=multi-user.target diff --git a/ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/actions-runner b/ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/actions-runner deleted file mode 100755 index 27272e1..0000000 --- a/ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/actions-runner +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -# -# Ephemeral runner startup script. -# -# Expects the following environment variables: -# -# - repo=/ -# - access_token= -# - runner_name= - -set -e -u - -# Check the cached registration token. -token_file=registration-token.json -set +e -expires_at=$(jq --raw-output .expires_at "$token_file" 2>/dev/null) -status=$? -set -e -if [[ $status -ne 0 || $(date +%s) -ge $(date -d "$expires_at" +%s) ]]; then - # Refresh the cached registration token. - curl \ - -X POST \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token $access_token" \ - "https://api.github.com/repos/$repo/actions/runners/registration-token" \ - -o "$token_file" -fi - -# (Re-)register the runner. -registration_token=$(jq --raw-output .token "$token_file") -./config.sh remove --token "$registration_token" || true -./config.sh \ - --url "https://github.com/$repo" \ - --token "$registration_token" \ - --labels z15 \ - --replace \ - --unattended \ - --name "$runner_name" \ - --ephemeral - -# Run one job. -./run.sh diff --git a/ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/entrypoint b/ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/entrypoint deleted file mode 100755 index 03cb61c..0000000 --- a/ci/rootfs/s390x-self-hosted-builder/fs/usr/bin/entrypoint +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -# -# Container entrypoint that waits for all spawned processes. -# - -set -e -u - -# /dev/kvm has host permissions, fix it. -if [ -e /dev/kvm ]; then - sudo chown root:kvm /dev/kvm -fi - -# Create a FIFO and start reading from its read end. -tempdir=$(mktemp -d "/tmp/done.XXXXXXXXXX") -trap 'rm -r "$tempdir"' EXIT -done="$tempdir/pipe" -mkfifo "$done" -cat "$done" & waiter=$! - -# Start the workload. Its descendants will inherit the FIFO's write end. -status=0 -if [ "$#" -eq 0 ]; then - bash 9>"$done" || status=$? -else - "$@" 9>"$done" || status=$? -fi - -# When the workload and all of its descendants exit, the FIFO's write end will -# be closed and `cat "$done"` will exit. Wait until it happens. This is needed -# in order to handle SelfUpdater, which the workload may start in background -# before exiting. -wait "$waiter" - -exit "$status" diff --git a/ci/rootfs/s390x-self-hosted-builder/qemu-user-static.service b/ci/rootfs/s390x-self-hosted-builder/qemu-user-static.service deleted file mode 100644 index 301f3ed..0000000 --- a/ci/rootfs/s390x-self-hosted-builder/qemu-user-static.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Support for transparent execution of non-native binaries with QEMU user emulation - -[Service] -Type=oneshot -# The source code for iiilinuxibmcom/qemu-user-static is at https://github.com/iii-i/qemu-user-static/tree/v6.1.0-1 -# TODO: replace it with multiarch/qemu-user-static once version >6.1 is available -ExecStart=/usr/bin/docker run --rm --interactive --privileged iiilinuxibmcom/qemu-user-static --reset -p yes - -[Install] -WantedBy=multi-user.target