87 lines
2.3 KiB
Markdown
87 lines
2.3 KiB
Markdown
# Infra — Familienarchiv
|
|
|
|
## Overview
|
|
|
|
Infrastructure-as-code and deployment configurations for the Familienarchiv platform. Currently focused on Gitea CI/CD workflows.
|
|
|
|
## Folder Structure
|
|
|
|
```
|
|
infra/
|
|
└── gitea/
|
|
└── workflows/
|
|
└── ci.yml # Gitea Actions CI pipeline
|
|
```
|
|
|
|
## CI/CD Pipeline (`gitea/workflows/ci.yml`)
|
|
|
|
The CI pipeline runs on every push and pull request. It consists of three parallel jobs:
|
|
|
|
### 1. Unit & Component Tests (`unit-tests`)
|
|
- **Container**: `mcr.microsoft.com/playwright:v1.58.2-noble`
|
|
- **Steps**:
|
|
1. Checkout code
|
|
2. Cache and install `node_modules`
|
|
3. Compile Paraglide i18n
|
|
4. Run lint (Prettier + ESLint)
|
|
5. Run Vitest unit + browser component tests
|
|
6. Upload screenshots on failure
|
|
|
|
### 2. OCR Service Tests (`ocr-tests`)
|
|
- **Runner**: `ubuntu-latest`
|
|
- **Steps**:
|
|
1. Setup Python 3.11
|
|
2. Install test dependencies (`pyspellchecker`, `pytest`, `pytest-asyncio`)
|
|
3. Run pure-logic tests (no ML stack required):
|
|
- `test_spell_check.py`
|
|
- `test_confidence.py`
|
|
- `test_sender_registry.py`
|
|
|
|
### 3. Backend Unit Tests (`backend-unit-tests`)
|
|
- **Runner**: `ubuntu-latest`
|
|
- **Env**: `DOCKER_API_VERSION=1.43` (for Testcontainers compatibility)
|
|
- **Steps**:
|
|
1. Setup Java 21 (Temurin)
|
|
2. Cache Maven repository
|
|
3. Run `./mvnw clean test`
|
|
|
|
## How to Run CI Locally
|
|
|
|
### Frontend Tests (same as CI)
|
|
```bash
|
|
cd frontend
|
|
npm ci
|
|
npx @inlang/paraglide-js compile --project ./project.inlang --outdir ./src/lib/paraglide
|
|
npm run lint
|
|
npm test
|
|
```
|
|
|
|
### OCR Tests (same as CI)
|
|
```bash
|
|
cd ocr-service
|
|
pip install "pyspellchecker==0.9.0" pytest pytest-asyncio
|
|
python -m pytest test_spell_check.py test_confidence.py test_sender_registry.py -v
|
|
```
|
|
|
|
### Backend Tests (same as CI)
|
|
```bash
|
|
cd backend
|
|
chmod +x mvnw
|
|
./mvnw clean test
|
|
```
|
|
|
|
## Future Infrastructure
|
|
|
|
Potential additions to this folder:
|
|
- Terraform / OpenTofu configs for cloud deployment
|
|
- Ansible playbooks for bare-metal setup
|
|
- Kubernetes manifests (Helm charts)
|
|
- Monitoring stack configs (Prometheus, Grafana)
|
|
- Reverse proxy configs (Nginx, Traefik)
|
|
|
|
## Notes
|
|
|
|
- The pipeline uses Gitea Actions (syntax-compatible with GitHub Actions).
|
|
- Docker API version pinning ensures compatibility with older Docker daemon versions.
|
|
- No deployment stage is defined yet — the CI stops at test verification.
|