Files
recipe-gitea-runner/README.md
T

4.2 KiB

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 image recipe-flutter-ci:3.41-node24 med 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 av docker-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.sock ger effektivt root-access. Använd enbart på betrodda hostar.
  • Runner data: Allt runner-tillstånd lagras under ./data. Säkerhetskopiera denna mapp regelbundet.

Referenser