Skip to content

Добавить ручные кроссплатформенные сборки GitHub Actions - #1291

Merged
heimdallr merged 36 commits into
heimdallr:Dev/#1291_cifrom
zastptm:ci/cross-platform-builds
Jul 20, 2026
Merged

Добавить ручные кроссплатформенные сборки GitHub Actions#1291
heimdallr merged 36 commits into
heimdallr:Dev/#1291_cifrom
zastptm:ci/cross-platform-builds

Conversation

@zastptm

@zastptm zastptm commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Что изменено

Добавлен единый GitHub Actions workflow для сборки FLibrary на Linux, Windows и macOS.

Сборка больше не хранится в памяти конкретного ноутбука, но и не устраивает получасовой парад на каждом PR. Workflow запускается только вручную и никак не задерживает влитие веток.

Как запускать

  1. Открыть Actions -> Cross-platform builds.
  2. Нажать Run workflow и выбрать нужную ветку или тег.
  3. Отметить платформы и запустить сборку.

В форме запуска доступны три флага:

  • Linux x86_64, включен по умолчанию;
  • macOS arm64 and x86_64, включен по умолчанию и собирает оба DMG;
  • Windows x86_64, опционален и выключен по умолчанию.

У workflow остался только триггер workflow_dispatch. Push, pull request и тег сами по себе ничего не запускают. Автоматической публикации GitHub Releases тоже нет.

Артефакты

Платформа Среда Результат
Linux x86_64 ubuntu:22.04 container, GCC 14 portable .tar.xz и установочный .deb
Windows x86_64 Windows Server 2022, Visual Studio 2022 portable .zip
macOS arm64 macOS 15, Xcode 26.3 drag-to-Applications .dmg
macOS x86_64 macOS 15 Intel, Xcode 26.3 drag-to-Applications .dmg

Пакеты сохраняются в Actions artifacts на 14 дней:

  • FLibrary-linux-x86_64;
  • FLibrary-windows-x86_64;
  • FLibrary-macos-arm64;
  • FLibrary-macos-x86_64.

Для каждого набора создается SHA256SUMS. Windows-сборка остается доступной для ручной проверки, но никуда автоматически не публикуется.

Используются зафиксированные Qt 6.10.3, Conan 2.30.0 и aqtinstall 3.3.0. Внешние Actions закреплены по полным commit SHA, checkout забирает все submodules и не сохраняет credentials.

Linux на Ubuntu 22.04

Job работает на актуальном GitHub host, а сама сборка выполняется внутри ubuntu:22.04. Поэтому отключение runner label ubuntu-22.04 не поменяет glibc и пользовательскую среду пакета.

GCC 14 устанавливается из Ubuntu Toolchain PPA и предоставляет используемые проектом C++23 API нативно. Временные compatibility-заголовки, fmt и range-v3 удалены, в Conan они не добавляются.

Проверки пакетов

Workflow проверяет не только код возврата компилятора:

  • Linux archive распаковывается, приложение запускается под Xvfb с --version, .deb проверяется через dpkg-deb --info;
  • Windows ZIP распаковывается, затем запускается FLibrary.exe --version;
  • macOS bundle проходит codesign --verify, DMG проходит hdiutil verify;
  • каждый macOS-образ содержит FLibrary.app и ссылку Applications -> /Applications.

Полная матрица из четырех платформ успешно прошла на коммите e35ea101: Actions run 29712304073.

Учтенные замечания ревью

  • macOS и Linux переведены в ручной режим;
  • Windows тоже не запускается автоматически и по умолчанию не выбрана;
  • release job и право contents: write удалены;
  • спорные compatibility-файлы удалены;
  • зависимости fmt и range-v3 удалены;
  • Ubuntu 22.04 собирается GCC 14 с нативной стандартной библиотекой C++23.

@heimdallr
heimdallr changed the base branch from develop to Dev/#1291_ci July 19, 2026 21:42
Comment thread src/home/compat/format Outdated
Comment thread src/home/compat/RangesTo.h Outdated
Comment thread src/home/script/conan/conanfile.py Outdated
@heimdallr

heimdallr commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Буду благодарен, если сделаете mac и linux сборку по требованию.
Мне точно не надо для влития веток в девелоп ждать, пока вся эта ботва соберутся.
И я точно не буду релизить виндовую сборку с стоковым Qt, ибо там краш. Т.е. автопубликация релизов не нужна.

@zastptm zastptm changed the title Добавить кроссплатформенную CI-сборку и выпуск релизов Добавить ручные кроссплатформенные сборки GitHub Actions Jul 20, 2026
@zastptm

zastptm commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

Учел замечания. Workflow теперь запускается только вручную через workflow_dispatch, Linux и macOS отмечены по умолчанию, Windows вынесен в отдельную выключенную по умолчанию опцию. Сборок на PR, push и теги больше нет, release job и contents: write удалены. Заодно убраны compatibility-заголовки и зависимости fmt/range-v3: Ubuntu 22.04 теперь собирается GCC 14 с нативной C++23 standard library. Перед переключением триггеров полная матрица из четырех платформ прошла успешно: https://github.com/heimdallr/books/actions/runs/29712304073

@heimdallr
heimdallr merged commit 1b70384 into heimdallr:Dev/#1291_ci Jul 20, 2026
heimdallr pushed a commit that referenced this pull request Jul 20, 2026
* Add cross-platform GitHub Actions builds

* Build Linux packages on Ubuntu 22.04

* Keep Ubuntu 22 builds after runner deprecation

* Publish versioned build artifacts to GitHub Releases

* Fix cross-platform CI bootstrap

* Install CMake in the Ubuntu build container

* Target macOS 13.3 for the current toolchain

* Build Windows dependencies with Ninja

* Define the Linux Conan C++ standard

* Support macdeployqt before Qt 6.11

* Keep the MSVC compiler path for nested builds

* Fix CI Conan profile resolution

* Avoid recursive macOS framework copies

* Normalize macOS plugin install names

* Configure the real bit7z target on MSVC

* Support ranges conversion on Ubuntu 22

* Parse universal macOS dependencies by architecture

* Keep foundation warnings compatible with Clang

* Rotate trusted Qt download mirrors

* Use POSIX shell for Qt mirror retries

* Cache the XZ source fallback for Linux CI

* Backport missing C++23 library features on Ubuntu 22

* Run CI for project review branches

* Keep Linux compatibility headers in one include

* Build Ubuntu packages with the native GCC toolchain

* Silence a false positive in the vendored SHA-1 code

* Backport the C++23 as-rvalue view on Ubuntu 22

* Ignore a GCC false positive in vendored templates

* Avoid copies in structured binding loops

* Install file for Debian package generation

* Bundle Linux runtime dependencies in release packages

* Build Ubuntu 22 packages with GCC 14

* Build visible column order without ranges::to

* Make platform package builds opt-in

* Remove trailing blank line from GCC profile

* Restore Conan recipe formatting
heimdallr added a commit that referenced this pull request Jul 20, 2026
heimdallr added a commit that referenced this pull request Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants