magisk-zapret2/docs/LOCAL_STABLE_RELEASE.md
loop-uh 5c983159e5
Some checks failed
Background release validation / Prepare Version (push) Successful in 2s
Background release validation / Fetch latest upstream zapret2 release (push) Successful in 5s
Magisk source guards / guards (push) Successful in 2s
Background release validation / Shell integration tests (push) Failing after 7s
Background release validation / Build Android APK (push) Has been skipped
Background release validation / Package Magisk Module (push) Has been skipped
Перенести сборку и обновления на Forgejo
2026-08-07 01:46:50 +03:00

55 lines
3 KiB
Markdown

# Локальный стабильный релиз
Стабильный production-канал не зависит от завершения Forgejo Actions. Actions после
push в `main` в фоне повторяет тесты и сборку и сохраняет run artifacts, но не имеет
права создавать теги или Forgejo Releases.
## Порядок выпуска
1. Обновить `version.properties`, проверить изменения, закоммитить и отправить
`main` в `origin`.
2. Запустить локальную квалификацию точного отправленного коммита:
```bash
.codex/skills/build-zapret2-locally/scripts/build-local-release.sh \
--channel stable \
--repo /home/codex-pve/magisk-zapret2
```
Сборка завершается только после source/release-policy проверок, полного shell
test suite, Android unit tests, release lint, проверки package contract, SHA-256
и production-сертификата APK. Результат находится в
`.artifacts/local-releases/v<VERSION>/`.
3. После явного решения опубликовать stable запустить:
```bash
.codex/skills/build-zapret2-locally/scripts/publish-stable-release.sh \
--repo /home/codex-pve/magisk-zapret2
```
Publisher повторно проверяет точный `origin/main`, монотонность `versionCode`,
отсутствие существующего тега/релиза, контрольные суммы, module metadata,
`update.json` и production-подпись APK. Затем он создаёт стабильный тег
`v<VERSION>`, публикует пять assets и помечает релиз как `Latest`.
Существующий тег или релиз никогда не перезаписывается. Если production signer
недоступен или любая проверка не проходит, стабильный релиз не публикуется.
## Локальная dev-сборка
Для проверки текущего рабочего дерева без commit/push:
```bash
.codex/skills/build-zapret2-locally/scripts/build-local-release.sh \
--channel dev \
--repo /home/codex-pve/magisk-zapret2
```
Dev-сборка включает tracked, изменённые и новые non-ignored файлы в приватный
snapshot, не меняя checkout. Она проходит те же локальные тесты и получает
production-подпись, чтобы APK можно было установить поверх stable. Артефакты имеют
версию `v<VERSION>-dev.<timestamp>.<sha>` и сохраняются в `.artifacts/dev-builds/`.
Dev-контур не создаёт `update.json`, Git tag, Forgejo Release или `Latest` и не
публикуется через stable publisher.