Разработкаdocs/developers/releases.md

Подготовка релизов

Одна ревизия исходного кода создаёт две продуктовые линии для пяти нативных платформ:

  • архив Core: нода, CLI и внешний майнер;
  • пакет GUI: приложение кошелька и встроенная нода.

Релизные артефакты собираются из существующего аннотированного тега версии и одного аутентифицированного пакета HistoryStep.

Поддерживаемые платформы

Система Core GUI
Linux x86-64 .tar.gz .deb
Linux ARM64 .tar.gz .deb
Windows x86-64 .zip установочный .exe
macOS Apple Silicon .tar.gz .dmg
macOS Intel .tar.gz .dmg

Все пакеты используют версию рабочего пространства из Cargo.toml.

Подготовка исходного кода

Перед созданием тега:

  1. обновите версию рабочего пространства и примечания к релизу;
  2. запустите форматирование, проверку рабочего пространства и тесты изменённых крейтов;
  3. выполните применимые интеграционные сценарии;
  4. аутентифицируйте канонический пакет матриц;
  5. убедитесь, что рабочее дерево содержит только намеренные изменения;
  6. создайте аннотированный тег vMAJOR.MINOR.PATCH.

Версия в теге и пакетах должна совпадать точно.

Пакет матриц

Релиз использует один архив:

text
history-step-pack-v1.tar.gz

Его SHA-256 — явный вход процесса сборки. Каждый нативный исполнитель независимо распаковывает и аутентифицирует пакет. Метаданные времени выполнения и два дайджеста листьев матриц должны совпадать с pins.env.

Релизная сборка встраивает аутентифицированные байты в parano1d; пользователю не нужно загружать матрицы при первом запуске.

Проверка платформ

Запустите вручную процесс Platform CI для коммита с тегом. Он проверяет:

  • переносимые флаги сборки;
  • компиляцию всего рабочего пространства;
  • нативную линковку бинарников;
  • поведение проверки оборудования;
  • самопроверку GUI;
  • штатные вычислительные ядра системы доказательств на каждой поддерживаемой архитектуре;
  • корректный отказ на неподдерживаемом старом виртуальном x86 CPU.

Сохраните ID успешного запуска и точный коммит, на который указывает тег.

Черновик релиза

Создайте черновик релиза GitHub для тега и прикрепите аутентифицированный пакет матриц. Не публикуйте его до завершения нативной сборки.

Запустите Native Release, передав:

  • существующий тег;
  • SHA-256 пакета матриц;
  • ID успешного запуска Platform CI;
  • канал релиза stable.

Предварительная проверка требует совпадающий аннотированный тег, черновик релиза, точную ревизию, успешно прошедшую Platform CI, и корректный дайджест пакета.

Нативная сборка

Каждый исполнитель выполняет:

sh
./scripts/build_release.sh \
  --pack .release-ci/pack/history-step-pack-v1 \
  --output .release-ci/build \
  --skip-tests

Полные тесты исходного кода уже прошли на той же ревизии с тегом. Каждое задание всё равно аутентифицирует пакет, собирает полный комплект целевых файлов, выполняет быстрые нативные проверки запуска, упаковывает обе продуктовые линии и загружает их в черновик.

Публикация

Финальное задание скачивает из черновика каждый ожидаемый артефакт, проверяет дайджест пакета матриц, создаёт единый SHA256SUMS, загружает его и только после этого открывает релиз.

Неполный набор платформ не публикуется.

Состояние подписей

Конвейер поддерживает необязательный сертификат Apple Developer ID. Без учётных данных проекта macOS использует ad-hoc подпись приложения, а Windows остаётся без Authenticode. Пока полноценные подписи не включены, пользовательская документация должна описывать предупреждения первого запуска и требовать проверку SHA-256.

Проверка опубликованного релиза

После публикации:

  1. скачайте каждый артефакт так же, как пользователь;
  2. проверьте SHA256SUMS;
  3. установите и удалите каждый GUI-пакет на нативной платформе;
  4. проверьте оборудование и справку Core;
  5. запустите ноду с чистым каталогом данных;
  6. проверьте P2P-синхронизацию, отправку кошелька, восстановление чека и корректное завершение;
  7. сохраните журналы сборки и точный дайджест пакета вместе с данными релиза.
Техническая документация ParanO(1)dПоведение консенсуса определяется исходным кодом.