161 lines
4.2 KiB
Markdown
161 lines
4.2 KiB
Markdown
# 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=<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.
|
|
|
|
```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)
|