Move CI/CD reference docs from memory to in-repo docs/
Some checks failed
Build / Calculate version information (push) Successful in 12s
Build / build_and_upload (push) Failing after 0s
Build / build_images (push) Failing after 0s
Close stale issues / stale (push) Successful in 5s

Moves ci-cd.md (59 lines) from Claude memory into docs/ alongside
existing architecture docs. Slims MEMORY.md from 42 to 18 lines by
removing sections duplicated in CLAUDE.md (Tech Stack, Key Patterns,
Architecture Docs index).

Total memory load per session: 101 → 18 lines.

Fixes #7

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-22 20:03:31 +01:00
parent aa6d8eae4c
commit e58bb9af21

58
docs/ci-cd.md Normal file
View File

@@ -0,0 +1,58 @@
# CI/CD Details for ErsatzTV Fork
## Upstream GitHub Actions (to adapt for Gitea)
### Workflows
| File | Trigger | Purpose |
|------|---------|---------|
| `ci.yml` | Push to main | Version calc → docker.yml + artifacts.yml |
| `release.yml` | GitHub Release | Same but with release version tags |
| `docker.yml` | Reusable workflow | Multi-arch Docker build+push (amd64, arm32v7, arm64) |
| `artifacts.yml` | Reusable workflow | Platform binaries (macOS DMG, Windows exe, Linux) |
| `pr.yml` | Pull request | Build+test on Linux, Windows, Mac |
### What to keep for Gitea fork
- **Docker build**: Simplify to amd64-only (jazz is x86_64), push to Gitea registry or local registry
- **PR checks**: Build + test on Linux only (single runner on jazz)
- **Drop**: macOS/Windows artifacts, code signing, multi-arch, GHCR/DockerHub push
### Build Steps (from pr.yml — the test workflow)
```bash
dotnet restore
sed -i '/Scanner/d' ErsatzTV/ErsatzTV.csproj # strip Scanner project ref
dotnet build --configuration Release --no-restore
dotnet test --blame-hang-timeout "2m" --no-restore --verbosity normal
```
### Docker Build (from docker.yml)
- Uses `docker/build-push-action@v5`
- Dockerfile: `docker/Dockerfile` (amd64), `docker/arm32v7/Dockerfile`, `docker/arm64/Dockerfile`
- Build arg: `INFO_VERSION` for version stamp
- Base image: `ghcr.io/ersatztv/ersatztv-ffmpeg:7.1.1` (custom ffmpeg)
- Needs Java in build stage (OpenAPI generator)
- Multi-stage: ffmpeg base → .NET runtime → build → final
### Image References to Update
- `jasongdove/ersatztv` → fork's registry image name
- `ghcr.io/ersatztv/ersatztv` → Gitea registry or local registry
- `ghcr.io/ersatztv/ersatztv-ffmpeg:7.1.1` — still needed as base; could mirror locally
### Gitea Actions Compatibility Notes
- Gitea Actions is GitHub Actions compatible but some actions need replacements
- `actions/checkout@v4` → works in Gitea Actions
- `actions/setup-dotnet@v4` → works in Gitea Actions
- `docker/login-action@v3` → needs Gitea registry credentials instead
- `docker/build-push-action@v5` → works but target registry changes
- `actions/upload-artifact@v4` / `download-artifact@v4` → works in Gitea Actions
- Reusable workflows (`workflow_call`) → supported in Gitea Actions
### Container Registry Options (from server-management#172)
1. **Gitea built-in** (Packages feature) — images at `192.168.1.95:3000/timothy/<package>`, needs HTTPS or `--insecure-registry`
2. **Local Docker registry**`registry:2` on jazz at port 5000
### Runner Setup (from server-management#172)
- `gitea/act_runner:latest` container on jazz
- Needs Docker socket for DinD builds
- Register via Gitea Admin → Runners → token
- Labels: `ubuntu-latest`, `docker`
- jazz has 128GB RAM, plenty for .NET builds (2-4GB)