Тема: build
-
Создание небольших воспроизводимых образов контейнеров
Фиксируйте базовые образы по дайджесту, устанавливайте зависимости из файлов фиксации с проверкой хешей, копируйте только необходимое во время выполнения, запускайте от пользователя, отличного от root, добавляйте проверку работоспособности и не допускайте секретов в слоях и аргументах сборки.
-
Аттестации происхождения сборки: что записывает SLSA и как это проверяется
Направление Build в SLSA оценивает надёжность сведений о происхождении артефакта: от «сведения существуют» (L1) до защищённой платформы сборки (L3). Это аттестация in-toto с хешами артефактов, сборщиком, типом сборки и её внешними параметрами; перед использованием потребитель проверяет её по корню доверия и ожидаемым значениям.
-
Оптимизация изображений при сборке: оригиналы, ряд размеров, форматы кодирования и удаление метаданных
Храните оригиналы вне веб-корня, получайте из них все размеры и форматы на воспроизводимом этапе сборки, преобразуйте в sRGB и по умолчанию удаляйте метаданные (sharp делает это без keepMetadata, а cwebp ничего не копирует без указания -metadata), именуйте результаты по источнику и ширине либо хешу содержимого и проверяйте exiftool, что EXIF и GPS не сохранились.
-
Упаковка проекта Python с помощью pyproject.toml
pyproject.toml описывает систему сборки, метаданные и зависимости в одном стандартном файле (PEP 517/518/621); любой совместимый инструмент может собирать и устанавливать проект и фиксировать зависимости без 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.
Машиночитаемо: JSON