# 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.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. ```bash docker build -f images/flutter-ci/Dockerfile -t recipe-flutter-ci:3.41-node24 . ``` ### 5. Starta runnern ```bash docker compose up -d ``` ### 6. 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.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:** ```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.15.0-bullseye docker image inspect recipe-flutter-ci:3.41-node24 ``` Om flutter-image saknas: ```bash 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`: ```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)