Initial runner configuration
This commit is contained in:
@@ -0,0 +1,17 @@
|
|||||||
|
# Gitea Actions Runner Configuration
|
||||||
|
|
||||||
|
# Gitea instance URL (external, accessible from runner host)
|
||||||
|
GITEA_INSTANCE_URL=https://gitea.gynther.se
|
||||||
|
|
||||||
|
# Runner registration token
|
||||||
|
# Hämta från: https://gitea.gynther.se/repo/settings/actions/runners
|
||||||
|
# Klicka "Create New Runner" eller "Create Instance-level Runner"
|
||||||
|
# Kopiera tokenen och sätt här
|
||||||
|
GITEA_RUNNER_REGISTRATION_TOKEN=
|
||||||
|
|
||||||
|
# Runner name (optional, defaults to hostname if empty)
|
||||||
|
GITEA_RUNNER_NAME=recipe-app
|
||||||
|
|
||||||
|
# Runner labels (optional, defaults to ubuntu-latest if empty)
|
||||||
|
# Format: label:docker://image,label:docker://image
|
||||||
|
GITEA_RUNNER_LABELS=backend-node24:docker://node:24-bullseye,flutter-3-41:docker://ghcr.io/cirruslabs/flutter:stable
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
# Environment and secrets
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# Runner data and state
|
||||||
|
/data
|
||||||
|
.runner
|
||||||
|
|
||||||
|
# Docker and system
|
||||||
|
.DS_Store
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
# 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-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)
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
services:
|
||||||
|
gitea-runner:
|
||||||
|
image: gitea/act_runner:latest
|
||||||
|
container_name: gitea-runner
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL}
|
||||||
|
GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN}
|
||||||
|
GITEA_RUNNER_NAME: ${GITEA_RUNNER_NAME:-recipe-app}
|
||||||
|
GITEA_RUNNER_LABELS: ${GITEA_RUNNER_LABELS:-backend-node24:docker://node:24-bullseye,flutter-3-41:docker://ghcr.io/cirruslabs/flutter:stable}
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
restart: always
|
||||||
Reference in New Issue
Block a user