26 lines
3.9 KiB
Markdown
26 lines
3.9 KiB
Markdown
# Сборка 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.
|