diff --git a/.gitea/workflows/iperf3.yml b/.gitea/workflows/iperf3.yml index 8ff9639..4c104c3 100644 --- a/.gitea/workflows/iperf3.yml +++ b/.gitea/workflows/iperf3.yml @@ -16,9 +16,7 @@ permissions: jobs: build-and-release: - runs-on: ubuntu-latest - container: - image: alpine:3.22 + runs-on: alpine-latest steps: - name: Checkout diff --git a/docs/runner-setup.md b/docs/runner-setup.md new file mode 100644 index 0000000..5389156 --- /dev/null +++ b/docs/runner-setup.md @@ -0,0 +1,119 @@ +# Gitea Actions runner setup for this repo + +This repository expects a Gitea Actions runner with the label: + +- `alpine-latest:docker://node:20-alpine` + +That label is intentional: +- `actions/checkout@v4` needs a Node-capable job image +- the build itself wants `apk`, which is easiest on Alpine +- the workflow then compiles a static `musl` binary directly inside the job container + +## Recommended placement in your infra + +Best fit: **your NL dedicated Debian 12 server**. + +Why: +- separate from the Gitea host, which is the recommended topology +- always-on box +- Docker is straightforward there +- enough resources for lightweight source builds + +Home server also works, but the NL dedicated host is the cleaner default. + +## 1. Confirm Actions are enabled in Gitea + +Your Gitea is `1.26.1`, so instance-level Actions support is already built in by default. + +Still verify: +- repo: `xnullzz/static-musl-builds` +- open `Settings -> Actions` +- ensure **Enable Repository Actions** is on + +The workflow is already detected by Gitea, so the remaining missing piece is the runner. + +## 2. Get a registration token + +You can create either: +- an **instance runner** token in `Site Administration -> Actions -> Runners`, or +- a **repository runner** token in `xnullzz/static-musl-builds -> Settings -> Actions -> Runners` + +For this project, a repository runner is enough. + +## 3. Install Docker on the runner host + +On Debian 12: + +```bash +sudo apt-get update +sudo apt-get install -y ca-certificates curl docker.io +sudo systemctl enable --now docker +``` + +## 4. Run act_runner in Docker + +Create a directory: + +```bash +sudo mkdir -p /opt/gitea-runner +sudo chown "$USER":"$USER" /opt/gitea-runner +cd /opt/gitea-runner +``` + +Create `docker-compose.yml`: + +```yaml +services: + runner: + image: docker.io/gitea/act_runner:0.2.11 + restart: always + environment: + CONFIG_FILE: /config.yaml + GITEA_INSTANCE_URL: "https://g.o4kosebezablokiruyte.ru" + GITEA_RUNNER_REGISTRATION_TOKEN: "PUT_TOKEN_HERE" + GITEA_RUNNER_NAME: "nl-dedicated-static-builder" + GITEA_RUNNER_LABELS: "alpine-latest:docker://node:20-alpine,ubuntu-latest:docker://node:20-bookworm" + volumes: + - ./config.yaml:/config.yaml + - ./data:/data + - /var/run/docker.sock:/var/run/docker.sock +``` + +Generate a starter config: + +```bash +docker run --rm --entrypoint="" docker.io/gitea/act_runner:0.2.11 \ + act_runner generate-config > config.yaml +mkdir -p data +``` + +Then start it: + +```bash +docker compose up -d +``` + +## 5. Verify the runner + +In Gitea, confirm the runner appears as online. + +You should see labels including: +- `alpine-latest` +- `ubuntu-latest` + +## 6. Trigger a test build + +After the runner is online, either: +- re-run the queued workflow from the Actions UI, or +- push any small commit to `main` + +Expected result: +- workflow builds `iperf3` +- a release tagged like `iperf3-v3.21` appears +- release assets include the static binary, tarball, and sha256 file + +## Notes + +- The queued run already visible in Gitea means repo Actions are working; only execution capacity is missing. +- If you later add more binaries, the same runner can be reused. +- If you want stricter isolation later, you can move to ephemeral runners, but for a personal infra repo this persistent Docker runner is a good starting point.