Gitea Actions Runner for Recipe App
Dedikerad runner för att köra Gitea Actions workflows för Recipe App CI/CD pipeline.
Förutsättningar
- Docker och Docker Compose installerat
- Åtkomst till Gitea-instansen (
https://gitea.gynther.se) - En registrerings-token från Gitea
Snabbstart
1. Kopiera miljövariabler
cp .env.example .env
2. Hämta registrerings-token från Gitea
Gå till en av dessa URL:er beroende på var du vill registrera runnern:
Instance-level runner (kör jobb för alla repos):
https://gitea.gynther.se/-/admin/actions/runners
Organization-level runner (kör jobb för org):
https://gitea.gynther.se/din-org/settings/actions/runners
Repository-level runner (kör jobb bara för repo):
https://gitea.gynther.se/owner/recipe-app/settings/actions/runners
Klicka "Create Runner" eller "Create New Runner", kopiera registrerings-tokenen.
3. Konfigurера .env
nano .env
Sätt dessa värden:
GITEA_INSTANCE_URL=https://gitea.gynther.se
GITEA_RUNNER_REGISTRATION_TOKEN=<din-token-här>
GITEA_RUNNER_NAME=recipe-app
GITEA_RUNNER_LABELS=backend-node24:docker://node:24.15.0-bullseye,flutter-3-41:docker://recipe-flutter-ci:3.41-node24
4. Bygg lokal Flutter CI-image
Flutter-jobben blir stabilare om de körs i en image med både Flutter + Node.js + Git.
docker build -f images/flutter-ci/Dockerfile -t recipe-flutter-ci:3.41-node24 .
5. Starta runnern
docker compose up -d
6. Verifiera att den är online
docker compose logs -f
Du bör se output som:
level=info msg="Runner registered successfully."
level=info msg="Listening on..."
Gå sedan till Gitea-instansen och verifiera att runnern visas som online under Actions → Runners.
Daglig drift
# Se status och loggar
docker compose logs -f
# Starta om runnern
docker compose restart
# Stoppa runnern
docker compose down
# Rensa runner-data (varning: raderar allt data)
docker compose down -v
Labels och Job-matchning
Workflown i recipe-app definieras i recipe-app/.gitea/workflows/test.yml.
Aktuella labels:
backend-node24: Node.js 24.15 i Bullseye — för backend-jobb (build, test, linting)flutter-3-41: Lokal imagerecipe-flutter-ci:3.41-node24med Flutter + Node + Git + Bash
Om en workflow kör med runs-on: backend-node24 eller runs-on: flutter-3-41, kommer denna runner att köra jobbet i motsvarande Docker-image.
Troubleshooting
Runner visas som offline
Kontrollera loggarna:
docker compose logs
Vanliga felorsaker:
- Token är fel eller utgånget → skapa ny token i Gitea
- URL är felaktig → verifiera att
https://gitea.gynther.seär nåbar från runner-hosten - Docker-socketen är inte tillgänglig → verifiera att
runnerär medlem avdocker-gruppen eller att socketen är monterad
Jobb slutförs inte
Verifiera labels:
Säkra att workflow använder en av de definierade labels. Om runs-on matchar ingen label, kommer jobbet att sitta i kö.
Verifiera Docker-image:
docker pull node:24.15.0-bullseye
docker image inspect recipe-flutter-ci:3.41-node24
Om flutter-image saknas:
docker build -f images/flutter-ci/Dockerfile -t recipe-flutter-ci:3.41-node24 .
Token är exponerad
Skapa omedelbar en ny token i Gitea och uppdatera .env:
# Skapa ny token i Gitea UI
nano .env
# Uppdatera GITEA_RUNNER_REGISTRATION_TOKEN
docker compose restart
Säkerhet
- Secrets:
.env-filen innehåller sensitiv data. Lägg den ALDRIG i Git. - Docker socket: Montering av
/var/run/docker.sockger effektivt root-access. Använd enbart på betrodda hostar. - Runner data: Allt runner-tillstånd lagras under
./data. Säkerhetskopiera denna mapp regelbundet.