цей репозиторій містить мінімальний, але повний каркас застосунку на Python із CI/CD, підписуванням артефактів Cosign, SBOM (Syft), перевіркою SBOM (Grype), та Scorecard.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
curl -O https://raw.githubusercontent.com/savostyanenko/example_of_vulnerable_code_2/main/41_scan_stream_default.pymake build- Структура репозиторію:
41_scan_stream_default.py,README.md,requirements.txt,Makefile,.github/workflows/ci-cd.yml, файли SBOM, підписи Cosign. - Код: скопіювати
41_scan_stream_default.pyзsavostyanenko/example_of_vulnerable_code_2(скриптfetch_source.shробить це автоматично). - Залежності: фіксуємо лише реальні імпорти скрипта у
requirements.txt(за замовчуванням — порожньо). - Makefile: цілі
install,build,clean. - Гілки:
dev→stage→main. Уmainпотрапляє код лише через Pull Request (MR). - CI/CD: на PR і на тег
v*— збірка, SBOM (Syft), перевірка SBOM (Grype), підпис Cosign, Scorecard; на тег — реліз v1.0.0 з артефактами. - Безпека: Cosign keyless, SBOM (spdx та cyclonedx), Grype репорт, OSSF Scorecard.
- Ролі: 4 користувачі; лише 1 має право пушити у
main; усі працюють через PR.
dev— активна розробкаstage— передпродове тестуванняmain— продакшн; захищена гілка, тільки через PR
- build: збірка псевдобінаря
pyinstallerта пакування артефактів - sbom: генерація SBOM (
spdx-json,cyclonedx-json) за допомогою Syft - scan: перевірка SBOM Grype (
vulnerabilities.json) - sign: Cosign keyless підпис
artifact.zip(+ сертифікат) - release: створення GitHub Release на тег
v*і завантаження артефактів
git tag -a v1.0.0 -m "Release 1.0.0"
git push origin v1.0.0Пайплайн створить реліз і додасть туди артефакти.
1.0.0