Files
ci-images/README.md
T
skoandClaude Opus 4.8 91d216cae4
Build ci-python image / build (push) Failing after 2m53s
feat: ci-python CI-Basis-Image + Build-Workflow
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>
2026-08-04 11:21:17 +02:00

1.7 KiB

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:

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)

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

docker build -t ci-python:test python
docker run --rm ci-python:test python --version