Gitea Actions: act_runner install, register, and workflows ========================================================== This guide covers connecting a self-hosted act_runner to Gitea (same engine as GitHub Actions-style workflows), binary download, registration, optional YAML runner config, and a repository workflow example. Official reference: https://docs.gitea.com/usage/actions/act-runner act_runner project: https://gitea.com/gitea/act_runner Prerequisites ------------- - Gitea 1.19+ with Actions enabled (server and repo/org settings as needed). - For Docker-based jobs (default labels like ubuntu-latest): Docker Engine installed and running on the runner host, and the user running act_runner in the docker group (Linux) or equivalent. - Network from the runner to your Gitea HTTP(S) URL. 1. Download the binary (Linux amd64, version 0.2.11) ----------------------------------------------------- Use one consistent filename end-to-end (avoid mixing act_runner and act_runner-linux-amd64): cd /opt/act_runner sudo mkdir -p /opt/act_runner && sudo chown "$USER": /opt/act_runner cd /opt/act_runner wget https://dl.gitea.com/act_runner/0.2.11/act_runner-0.2.11-linux-amd64 -O act_runner chmod +x act_runner ./act_runner --version Other platforms and versions: https://gitea.com/gitea/act_runner/releases https://dl.gitea.com/act_runner/ 2. Get a registration token from Gitea -------------------------------------- Runners can be registered at instance, organization, or repository scope. Instance (admin): Site Administration -> Actions -> Runners (path like /-/admin/actions/runners) Organization: Org -> Settings -> Actions -> Runners Repository: Repo -> Settings -> Actions -> Runners Alternative on the Gitea server: gitea --config /etc/gitea/app.ini actions generate-runner-token CLI docs: https://docs.gitea.com/administration/command-line#actions-generate-runner-token 3. Register the runner ---------------------- Interactive (prompts for instance URL, token, name, labels): ./act_runner register or ./act_runner --config config.yaml register Non-interactive (automation / CI): ./act_runner register --no-interactive \ --instance "https://gitea.example.com/" \ --token "YOUR_REGISTRATION_TOKEN" \ --name "my-runner-01" \ --labels "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest" After registration, a .runner file appears in the working directory (or path set in config). Back up this file; do not commit secrets. If it is lost, remove it and register again with a new token if needed. 4. Start the runner ------------------- Foreground: ./act_runner daemon or ./act_runner daemon --config config.yaml systemd example (paths adjusted to your install): [Unit] Description=Gitea Actions runner After=docker.service [Service] ExecStart=/opt/act_runner/act_runner daemon --config /opt/act_runner/config.yaml WorkingDirectory=/opt/act_runner Restart=always User=act_runner Group=docker [Install] WantedBy=multi-user.target Then: sudo systemctl daemon-reload && sudo systemctl enable --now act_runner 5. Repository workflow YAML (Gitea Actions) ------------------------------------------- Workflows live under .gitea/workflows/ (not .github/workflows unless your Gitea is configured to use that path). Use runs-on labels that match your runner (defaults include ubuntu-latest). Example workflow file in this repo: .gitea/workflows/ci-example.yml Quick checklist --------------- 1. wget ... chmod +x ... ./act_runner --version 2. Token from Settings -> Actions -> Runners (or admin/org/repo equivalent) 3. ./act_runner register (or --non-interactive ...) 4. ./act_runner daemon 5. Commit a workflow under .gitea/workflows/ and push Docker image alternative ------------------------ If you prefer the official image instead of the bare binary: docker run -d \ -e GITEA_INSTANCE_URL="https://gitea.example.com/" \ -e GITEA_RUNNER_REGISTRATION_TOKEN="YOUR_REGISTRATION_TOKEN" \ -e GITEA_RUNNER_NAME="docker-runner-01" \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD/data:/data" \ --name gitea_act_runner \ docker.io/gitea/act_runner:latest Persist the /data volume so the runner does not re-register on every restart. Version note ------------ Ephemeral runners and some flags require act_runner 0.2.12+. This document uses 0.2.11 for the download URL; upgrade the URL when you bump versions.