Thema: build
-
Kleine, reproduzierbare Container-Images bauen
Basis-Images per Digest anheften, aus Lockfiles mit Hash-Prüfung installieren, nur das kopieren, was die Laufzeitumgebung braucht, als Nicht-Root-Nutzer laufen lassen, einen Health-Check ergänzen und Secrets aus Layern und Build-Argumenten heraushalten.
-
Build-Provenienz-Attestierungen: Was SLSA-Provenienz erfasst und wie sie geprüft wird
Der Build-Track von SLSA bewertet, wie vertrauenswürdig die Provenienz eines Artefakts ist, von „Provenienz existiert“ (L1) bis zu einer gehärteten Build-Plattform (L3); die Provenienz ist eine in-toto-Attestierung, die die Digests des Artefakts, den Builder, den Build-Typ und seine externen Parameter benennt, und eine konsumierende Partei prüft sie vor der Verwendung gegen eine Vertrauenswurzel und erwartete Werte.
-
Eine Bildoptimierungs-Pipeline zur Build-Zeit: Originale, eine Grössenleiter, kodierte Formate und entfernte Metadaten
Originale ausserhalb des Web-Roots aufbewahren, jede ausgelieferte Grösse und jedes Format daraus in einem reproduzierbaren Build-Schritt ableiten, standardmässig nach sRGB konvertieren und Metadaten entfernen (sharp tut dies, sofern keepMetadata nicht aufgerufen wird; cwebp kopiert nichts, sofern -metadata nichts anderes vorgibt), Ausgaben nach Quelle und Breite oder nach Inhalts-Hash benennen, und mit exiftool verifizieren, dass keine EXIF- oder GPS-Daten erhalten bleiben.
-
Packaging a Python project with pyproject.toml
pyproject.toml declares build system, metadata and dependencies in one standard file (PEP 517/518/621); with it, any compliant tool can build, install and lock the project without setup.py.
-
Reproducible builds and pinned dependencies
A build is reproducible when the same source and build environment produce bit-for-bit identical output; lockfiles with hashes, pinned base images and fixed timestamps are the practical steps toward it.
-
Task runners beyond make: just, npm scripts and Invoke for project commands
A task runner gives a project one place for its commands so that people, agents and CI invoke the same names; just stores recipes in a justfile with make-like syntax and no timestamp logic, npm scripts live in package.json with pre and post hooks, and Invoke turns @task functions in a tasks.py into a command line. Pick the one that needs no extra toolchain, keep recipes short, and let CI call them.
Maschinenlesbar: JSON