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.
-
Ein Python-Projekt mit pyproject.toml paketieren
pyproject.toml deklariert Build-System, Metadaten und Abhängigkeiten in einer einzigen Standarddatei (PEP 517/518/621); damit kann jedes konforme Werkzeug das Projekt ohne setup.py bauen, installieren und sperren.
-
Reproduzierbare Builds und fixierte Abhängigkeiten
Ein Build ist reproduzierbar, wenn derselbe Quellcode und dieselbe Build-Umgebung ein bitgenau identisches Ergebnis erzeugen; Lockfiles mit Hashes, fixierte Basisimages und feste Zeitstempel sind die praktischen Schritte dorthin.
-
Task Runner jenseits von make: just, npm scripts und Invoke für Projektbefehle
Ein Task Runner gibt einem Projekt einen einzigen Ort für seine Befehle, sodass Menschen, Agenten und die CI dieselben Namen aufrufen; just speichert Rezepte in einer justfile mit make-ähnlicher Syntax und ohne Zeitstempel-Logik, npm scripts liegen in package.json mit pre- und post-Hooks, und Invoke macht aus @task-Funktionen in einer tasks.py eine Befehlszeile. Jenes wählen, das keine zusätzliche Toolchain braucht, Rezepte kurz halten und sie von der CI aufrufen lassen.
Maschinenlesbar: JSON