Files
AnabasisChatRemove/docs/release-linux.md
T
2026-09-25 15:00:28 +03:00

26 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Сборка Windows-релиза на Linux runner
Workflow `.gitea/workflows/release.yml` запускается вручную из ветки `master` через Gitea Actions → Desktop Release → Run workflow. Версия берётся из `app_version.py`; для ближайшего релиза это `2.3.0`.
## Настройка раннера
- Ваши `runner.labels` в `/config.yaml` уже верно привязывают `ubuntu-latest` к `docker://docker.gitea.com/runner-images:ubuntu-latest`. Менять их не требуется.
- В Docker Compose сейчас есть `GITEA_RUNNER_LABELS: "ubuntu-latest,docker,self-hosted"`. Удалите эту переменную или задайте в ней ту же явную схему `ubuntu-latest:docker://...`: при запуске daemon значение переменной может переопределить `runner.labels`, а голая метка `ubuntu-latest` означает выполнение шагов внутри контейнера `gitea-runner`.
- Ваше монтирование `/var/run/docker.sock:/var/run/docker.sock` в контейнер раннера оставьте. Job-контейнеру также нужен доступ к этому сокету через настройки `container.docker_host` (значение по умолчанию — автоопределение). Workflow при необходимости установит Docker CLI в job-контейнер.
- Docker host должен быть x86_64 и иметь достаточно места. `actions/setup-python` устанавливает Python 3.13 в job-контейнер.
- `scripts/install-qt-runtime-deps.sh` ставит системные runtime-библиотеки OpenGL, XCB и X11 для PySide6; список составлен по [требованиям Qt для Linux](https://doc.qt.io/qt-6/linux-requirements.html).
- В секретах репозитория нужен `API_TOKEN` с правами записи тегов и релизов. Checkout также должен иметь право отправить git tag в `origin`.
- Первый запуск скачает образы `batonogov/pyinstaller-windows:latest` и `amake/innosetup:innosetup6` и установит зависимости Python внутри контейнера Wine. Для образов и артефактов потребуется несколько гигабайт свободного места. Сборка передаёт файлы через `docker cp`, поэтому пути внутри job-контейнера и Docker host могут различаться.
## Что делает workflow
1. Проверяет, что релиза `v2.3.0` ещё нет, затем запускает тесты.
2. Собирает Windows-приложение и ZIP через PyInstaller под Wine.
3. Собирает установщик через Inno Setup под Wine.
4. Проверяет наличие обоих EXE, `version.txt` в ZIP и SHA256 обоих файлов.
5. Создаёт тег и релиз Gitea с четырьмя вложениями: ZIP, его `.sha256`, установщик EXE и его `.sha256`.
Имена ZIP и файлов SHA256 сохранены в формате, который читает автообновление. Workflow для ветки `dev` также переведён на `ubuntu-latest` и выпускает ZIP-предрелизы; установщик для них не собирается.
Сборка под Wine требует отдельной проверки запуска приложения и установки на реальной Windows. Локально можно собрать и проверить артефакты теми же скриптами `scripts/docker-build-windows.sh` и `scripts/docker-build-installer.sh`, если доступен Linux с Docker.