CI: GPG-подпись релизов Linux и SBOM в pipeline
Что изменилось
Релизный pipeline ROX.ONE получил две ключевые производственные возможности: криптографическую подпись Linux-бинарей и генерацию Bill of Materials для каждого выпуска.
- GPG-подпись Linux: GitHub Actions workflow автоматически подписывает AppImage для x64 и arm64 при каждом релизе с тегом. Приватный ключ хранится как зашифрованный GitHub Secret, публичный ключ прикладывается к Release assets как
rox-one.pub.asc. Fingerprint публикуется в README. - SBOM CycloneDX: Software Bill of Materials генерируется через
@cyclonedx/cyclonedx-npmи загружается какsbom.cdx.jsonк каждому релизу. Содержит все прямые и транзитивные зависимости с лицензиями, PURL и версиями. - Preflight gate расширен до 16 проверок: GPG-верификация, SBOM-валидация, bundle size budget, locale completeness, smoke-тест запуска, dependency audit (known CVEs), license scan, TypeScript strict compile.
- Все 16 gate'ов зелёные для RC2 — это жёсткое условие для объявления GA.
- Workflow вынесен в переиспользуемый composite action:
.github/actions/release-sign.
Где попробовать
Откройте страницу GitHub Releases. Рядом с каждым AppImage теперь есть файл .sig. Верифицируйте подлинность:
gpg --import rox-one.pub.ascgpg --verify rox-one-linux-x64.AppImage.sig rox-one-linux-x64.AppImageSBOM: скачайте sbom.cdx.json и проверьте через cyclonedx-cli validate.
Детали безопасности: GPG ключ 4096-bit RSA хранится как зашифрованный GitHub Secret. При релизе CI импортирует ключ во временный keyring, подписывает артефакты, затем немедленно удаляет — приватный ключ не сохраняется на runner дольше одного job. Публичный ключ и fingerprint опубликованы в README для независимой верификации.
Связанное
Дорожная карта: Упаковка и Релиз, Безопасность и Compliance.