7.0 KiB
Как выпускать релиз
Подготовка через PR
- Поднять версию согласованно в шести файлах:
Cargo.toml— версия пакетаtglock;Cargo.lock— версия только пакетаtglock, без обновления зависимостей;tauri.conf.json— версия приложения и имён установщиков;package.json— версия frontend-пакета;package-lock.json— верхняя версия иpackages[""].version;ui/main.ts— версия копируемого диагностического отчёта.
- Подготовить описание изменений и проверок, отдельно указав экспериментальные
платформы и непроверенные сценарии. Android получает
versionName/versionCodeиз конфигурации Tauri при сборке; сгенерированныйtauri.propertiesне коммитится. - Проверить финальные изменения PR и слить его в
mainс соблюдением обязательных проверок ветки. Дождаться зелёных проверок и Android workflow на итоговом HEADmainдо создания тега. APK предыдущего PR-коммита не заменяет артефакт этого коммита:headShaAndroid run должен совпадать с коммитом будущего тега.
Тег и сборка
Release workflow этого репозитория допускает тег только на текущем HEAD ветки
по умолчанию. Guard сохраняет прежнюю защиту от выпуска другого коммита:
ранее расхождение тега и main сопровождалось ошибкой публикации
Resource not accessible by integration.
-
Сверить
git ls-remote origin refs/heads/mainи локальныйgit rev-parse HEADпосле перехода на финальный коммитmain. -
Убедиться, что выбранная версия и тег ещё не существуют, затем поставить аннотированный тег на этот коммит:
git tag -a v2.0.0-beta.N -m "TGLock 2.0.0-beta.N" git push origin v2.0.0-beta.N -
Пока релиз собирается, не добавлять коммиты в
main. Guard проверяет HEAD в начале работы и не устраняет гонку после проверки. -
Дождаться всех jobs Release. Workflow создаёт draft и сохраняет его черновиком при загрузке GUI, CLI и ARM64. Частично загруженный выпуск не должен становиться общедоступным до проверок.
Ручной workflow_dispatch запускайте на релизном теге, а не на ветке: часть
загрузчиков использует github.ref_name как имя релиза.
Проверка артефактов и публикация
Зелёный workflow сам по себе недостаточен. В бетах 2 и 3 в GUI-бандл попадал headless-бинарь, поэтому проверяются содержимое и происхождение:
- Windows: GUI
.exeиtglock-cli-x86_64-pc-windows-msvc.exe. - macOS: универсальные
.dmg,.app.tar.gzи CLI. - Linux x64:
.AppImage,.debи CLI. - ARM64 Linux:
tglock-cli-aarch64-unknown-linux-muslи его.sha256; workflow проверяет ELF без динамических зависимостей и запуск бинаря. - Android: скачать ARM64 debug APK из успешного Android run с
headSha, совпадающим с коммитом тега. Сохранить имя с версией и явной пометкойandroid-arm64-debug, прикрепить APK к тому же draft. Указать экспериментальный статус и ограничения debug-подписи из ANDROID.md.
Пример проверки скачанного macOS-бандла:
gh release download vX.Y.Z --repo by-sonic/tglock -p 'TGLock_universal.app.tar.gz' -D /tmp/check
tar -xzf /tmp/check/TGLock_universal.app.tar.gz -C /tmp/check
python scripts/verify_bundle_binary.py /tmp/check/TGLock.app/Contents/MacOS/tglock
Проверьте версию скачанного CLI и хотя бы один реальный протокольный обмен через него по LIVE_PROBE.md. Зафиксируйте, какие платформы исполнены локально, а какие проверены CI. Секрет локального прокси в заметки и публичные артефакты не включается.
Когда набор файлов полон, подписи/контрольные суммы и версии сверены, а release notes готовы, опубликуйте draft. Например:
gh release edit vX.Y.Z --repo by-sonic/tglock --draft=false --notes-file release-notes.md
Исторически v2.0.0-beta.* в этом репозитории публикуются с prerelease=false;
workflow сохраняет эту настройку. После публикации проверьте публичную страницу
релиза, ссылки скачивания и список файлов. Краткий пост об обновлении должен
ссылаться на опубликованный релиз и отделять проверенные исправления от
экспериментальных платформ.
Если сборка или публикация упала
Сначала прочитайте ошибку и сверяйте коммит тега, main, workflow run и версии.
Не делайте вывод о причине только из текста Resource not accessible by integration: он может относиться и к правам токена.
git ls-remote origin refs/heads/main 'refs/tags/vX.Y.Z^{}'
Если это ошибка инфраструктуры, повторите упавшие jobs на том же коммите. Если нужна правка исходников, внесите её через PR и выберите новую версию для нового тега. Опубликованные теги и бинарные артефакты не заменяйте: пользователи должны иметь возможность воспроизвести уже выпущенную версию.