# 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 ```bash 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` ```bash nano .env ``` Sätt dessa värden: ```env GITEA_INSTANCE_URL=https://gitea.gynther.se GITEA_RUNNER_REGISTRATION_TOKEN= GITEA_RUNNER_NAME=recipe-app GITEA_RUNNER_LABELS=backend-node24:docker://node:24-bullseye,flutter-3-41:docker://ghcr.io/cirruslabs/flutter:stable ``` ### 4. Starta runnern ```bash docker compose up -d ``` ### 5. Verifiera att den är online ```bash 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 ```bash # 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](../recipe-app/.gitea/workflows/test.yml). Aktuella labels: - **`backend-node24`**: Node.js 24 i Bullseye — för backend-jobb (build, test, linting) - **`flutter-3-41`**: Flutter 3.41 — för Flutter-jobb (analyze, test) 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:** ```bash 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:** ```bash docker pull node:24-bullseye docker pull ghcr.io/cirruslabs/flutter:stable ``` ### Token är exponerad Skapa omedelbar en ny token i Gitea och uppdatera `.env`: ```bash # 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 - [Gitea Actions Documentation](https://docs.gitea.com/usage/actions/overview) - [Act Runner Setup Guide](https://docs.gitea.com/usage/actions/act-runner) - [Recipe App CI Workflow](.../recipe-app/.gitea/workflows/test.yml)