feat: ci-python CI-Basis-Image + Build-Workflow
Build ci-python image / build (push) Failing after 2m53s
Build ci-python image / build (push) Failing after 2m53s
Vorgebackenes Python-CI-Image (debian:bookworm-slim + uv, gepinnte CPython 3.12.13, ruff 0.16.1, pytest 9.1.1) fuer Gitea Actions. Basis + uv per Digest gepinnt, Versionen zentral im Dockerfile-Kopf. Build-Workflow pusht :latest + :<sha> in die Gitea-Registry (sko/ci-python), woechentlicher Rebuild. Lokal verifiziert: Build gruen, 397 MB, uv sync --frozen + Exporter-Imports OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# ci-images
|
||||
|
||||
Vorgebackene CI-Basis-Images für Gitea Actions. Ziel: schneller Cold-Start und
|
||||
reproduzierbare Läufe, statt Werkzeuge bei jedem Lauf per `curl | sh` /
|
||||
`pip install` nachzuladen (siehe Recherche „CI/CD-Optimierung mit Docker & Ansible").
|
||||
|
||||
## Images
|
||||
|
||||
| Image | Registry-Pfad | Inhalt |
|
||||
|-------|---------------|--------|
|
||||
| `ci-python` | `gitea.inmedias.it/sko/ci-python` | `debian:bookworm-slim` + uv + gepinnte CPython, ruff, pytest |
|
||||
|
||||
Weitere Stacks (z. B. `ci-node`) kommen als eigene Unterordner nach demselben
|
||||
Muster dazu, sobald der Python-Pilot trägt.
|
||||
|
||||
## Versionen pflegen (eine Quelle der Wahrheit)
|
||||
|
||||
Alle Versionen stehen als `ARG` bzw. gepinnter Digest oben im jeweiligen
|
||||
`Dockerfile` (z. B. `python/Dockerfile`). Ändern → auf `main` pushen → der
|
||||
Workflow `build-ci-python` baut und pusht neu.
|
||||
|
||||
Digests auffrischen:
|
||||
|
||||
```bash
|
||||
docker buildx imagetools inspect debian:bookworm-slim
|
||||
docker buildx imagetools inspect ghcr.io/astral-sh/uv:0.12.1
|
||||
```
|
||||
|
||||
## Verwendung in einem Repo (Weg B: `container:`, kein Runner-Eingriff)
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
container: gitea.inmedias.it/sko/ci-python:latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: uv sync --frozen # repo-eigene Deps aus uv.lock
|
||||
- run: ruff check .
|
||||
- run: pytest
|
||||
```
|
||||
|
||||
Zum reproduzierbaren Pinnen statt `:latest` einen unveränderlichen `:<sha>`-Tag
|
||||
verwenden.
|
||||
|
||||
Registry-Login für den Pull passiert im Runner über einen `container.credentials`-
|
||||
Block oder `docker/login-action` gegen `gitea.inmedias.it` (PAT, Scope `package:read`).
|
||||
|
||||
## Build lokal testen
|
||||
|
||||
```bash
|
||||
docker build -t ci-python:test python
|
||||
docker run --rm ci-python:test python --version
|
||||
```
|
||||
Reference in New Issue
Block a user