Верификация выпусков
Каждый кандидат выпуска DispatchAtlas собирается единственным аудированным рабочим процессом, который наряду с дистрибутивами Python эмитирует набор независимо верифицируемых артефактов цепочки-поставок: хеши SHA-256, Sigstore signature bundles, GitHub build provenance attestations, один SBOM attestation, и CycloneDX software bill of materials. Эта страница документирует, как верифицировать каждый.
Заменяйте vX.Y.Z тегом выпуска, который вы скачали, повсюду.
📦 Артефакты, прикреплённые к выпуску
| Артефакт | Назначение |
|---|---|
*.whl, *.tar.gz | Python-wheel и дистрибутивы исходников. |
SHA256SUMS.txt | Хеши SHA-256 для каждого артефакта дистрибутива. |
*.sigstore.json | Sigstore signature bundle (один на артефакт). |
sbom.cyclonedx.json | CycloneDX-SBOM аудированной среды сборки. |
GitHub build provenance и SBOM attestations хранятся с записями attestation репозитория, а не как вложения выпуска, и верифицируются через GitHub CLI.
🔢 Верифицируйте хеши
Скачайте артефакты дистрибутива и SHA256SUMS.txt в один каталог, затем проверьте их:
sha256sum --check SHA256SUMS.txtКаждая строка должна сообщить OK.
✍️ Верифицируйте подписи Sigstore
Выпуск подписывает каждый артефакт бесключевой подписью Sigstore через OpenID-Connect-идентичность рабочего процесса. Установите cosign и верифицируйте bundle для артефакта:
cosign verify-blob \
--bundle dispatchatlas-vX.Y.Z-py3-none-any.whl.sigstore.json \
--certificate-identity-regexp 'https://github.com/ahmed-g-gad/dispatchatlas/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
dispatchatlas-vX.Y.Z-py3-none-any.whlУспешный прогон печатает Verified OK. Та же команда верифицирует SHA256SUMS.txt и
sbom.cyclonedx.json против их bundle.
🧾 Верифицируйте GitHub build provenance
Каждый дистрибутив несёт подписанное provenance-утверждение, описывающее рабочий процесс, коммит, и runner, который его собрал. Верифицируйте его с GitHub CLI:
gh attestation verify dispatchatlas-vX.Y.Z-py3-none-any.whl \
--repo ahmed-g-gad/dispatchatlasВывод подтверждает, что артефакт был собран рабочим процессом выпуска на ожидаемом коммите.
🧰 Инспектируйте SBOM
CycloneDX-SBOM перечисляет каждый компонент в среде сборки с его URL пакета, лицензией, и хешами содержимого. Инспектируйте его любым CycloneDX-осведомлённым инструментом, или читайте список компонентов напрямую:
python -c "import json; d = json.load(open('sbom.cyclonedx.json')); \
print('\n'.join(c['name'] + ' ' + c.get('version', '') for c in d['components']))"SBOM сам attested; верифицируйте SBOM attestation с:
gh attestation verify dispatchatlas-vX.Y.Z-py3-none-any.whl \
--repo ahmed-g-gad/dispatchatlas \
--predicate-type https://cyclonedx.org/bom🚨 Сообщение о сбое верификации
Если какой-либо шаг верификации проваливается для артефакта, который вы скачали из официального выпуска, не устанавливайте его. Сообщите о расхождении через каналы в политике безопасности проекта.