Umgebungen trennen

Aktuelle Best-Practices trennen zwischen verschiedenen Umgebungen, je nachdem, was in dieser Umgebung gemacht werden soll. So wird z. B. in unserer cusy.tasks-Anwendungen folgende Umgebungen unterschieden:

pyproject.toml
[project]

dependencies = [
  "rich",
  "tinydb",
  "typer",
]

[dependency-groups]
dev = [
  "pre-commit",
  "reuse",
  "tox-uv",
  "watchgha",
  { include-group = "docs" },
  { include-group = "tests" },
]
docs = [
  "furo",
  "interrogate",
  "matplotlib",
  "sphinx-copybutton",
  "sphinx-inline-tabs",
  "sphinxcontrib-napoleon",
  "sphinxext-opengraph",
]
tests = [
  "coverage[toml]",
  "faker",
  "pytest",
  "pytest-cov",
]

So können beim Betrieb der Anwendung nur die dafür benötigten Abhängigkeiten installiert werden, Nur beim Testen oder beim Deployment der Dokumentation werden jeweils dort benötigte Abhängigkeiten zusätzlich installiert. Lediglich die Entwicklungsumgebung enthält alle Abhängigkeiten.

So wie eure Python-Umgebung mit unveränderbaren Referenzen aktuell gehalten werden sollte, sollten auch eure prek-Checks und GitHub Actions regelmäßig aktualisiert werdenn.

In der .pre-commit-config.yaml sollten die Versionen der Checks mit ihren Hashes regelmäßig aktualisiert werden, z. B. mit:

$ uv run prek update --freeze --cooldown-days 7
https://github.com/pre-commit/pre-commit-hooks
  updating rev `v6.0.0` -> `3e8a8703264a2f4a69428a0aa4dcb512790b2c8c` (frozen: v6.0.0)

Siehe auch

prek

GitHub Actions könnt ihr pinact verwenden, z. B. mit:

$ pinact run -u --min-age 7

Überprüft eure GitHub-Actions

zizmor ist ein Tool zur statischen Analyse, das Sicherheitslücken in GitHub-Actions-Workflows aufspürt – darunter Template-Injection, nicht fixierte Aktionen, übermäßige Berechtigungen, das Offenlegen von Anmeldedaten sowie mehr als 30 weitere Prüfregeln. zizmor erkennt Schwachstellen wie diejenigen, die durch Token Exfiltration ausgenutzt wurden.