Skip to content

ci: add Linux CI workflow with self-hosted Docker runner#11

Merged
deku2026 merged 3 commits into
mainfrom
ci/add-linux-build
Mar 6, 2026
Merged

ci: add Linux CI workflow with self-hosted Docker runner#11
deku2026 merged 3 commits into
mainfrom
ci/add-linux-build

Conversation

@deku2026
Copy link
Copy Markdown

@deku2026 deku2026 commented Mar 4, 2026

Summary

Add Linux CI build using a self-hosted Docker runner on a dedicated server.

Changes

CMakePresets.json

  • Add \linux-base\ and \linux-ci\ configure presets (FASTBuild on Linux)
  • Add \linux-ci\ build preset
  • Update all build presets with -cachetrim 10240\ (auto-trim FASTBuild cache to 10 GB)

CMakeLists.txt

  • Add /permissive-\ for MSVC strict standard C++ conformance

.github/workflows/linux-ci.yml

  • Runs on [self-hosted, linux, arcforges]\ Docker container
  • Installs CMake 4.2.3, FASTBuild v1.19, vcpkg from source each run
  • Uses mounted volumes for persistent caching:
    • /cache/fastbuild\ — FASTBuild obj cache (auto-trimmed to 10 GB)
    • /cache/vcpkg\ — vcpkg binary cache (near-instant reinstalls)
    • /opt/qt6\ — Qt 6.10.2 (read-only mount)
  • 6-core concurrency limits (\VCPKG_MAX_CONCURRENCY, \CMAKE_BUILD_PARALLEL_LEVEL)

docker/docker-linux-ci.yml

  • Docker Compose config for the self-hosted runner container
  • Resource limits: 6 CPUs, 10 GB RAM

Runner Setup

Component Location (host) Container mount
FASTBuild cache /opt/ci_cache/fastbuild\ /cache/fastbuild\
vcpkg binary cache /opt/ci_cache/vcpkg\ /cache/vcpkg\
Qt 6.10.2 /opt/qt6\ /opt/qt6\ (ro)

Copilot AI review requested due to automatic review settings March 4, 2026 07:29
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Linux CI pipeline that runs on a self-hosted, Docker-based GitHub Actions runner, including new Linux CMake presets and FASTBuild cache trimming to support faster, repeatable CI builds on dedicated infrastructure.

Changes:

  • Added Linux FASTBuild CMake configure/build presets (linux-base, linux-ci) and a Linux build preset with FASTBuild cache auto-trimming.
  • Introduced a new self-hosted Linux CI GitHub Actions workflow that installs CMake/FASTBuild/vcpkg and builds via the new preset.
  • Added a Docker Compose definition for running the self-hosted GitHub runner container with mounted caches and resource limits.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.

File Description
docker/docker-linux-ci.yml Defines the self-hosted GitHub runner container, mounts cache volumes, and sets runner labels/config.
CMakePresets.json Adds Linux CI presets and applies FASTBuild cache trimming options across build presets.
CMakeLists.txt Adds MSVC /permissive- to enforce stricter standard conformance.
.github/workflows/linux-ci.yml Implements the Linux CI workflow on a self-hosted runner, including toolchain setup and vcpkg installs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/linux-ci.yml
Comment thread .github/workflows/linux-ci.yml
Comment thread .github/workflows/linux-ci.yml
Comment thread .github/workflows/linux-ci.yml
Comment thread CMakeLists.txt Outdated
Comment thread docker/docker-linux-ci.yml Outdated
Comment thread docker/docker-linux-ci.yml Outdated
@deku2026 deku2026 force-pushed the ci/add-linux-build branch from ee004f2 to 80e9a05 Compare March 4, 2026 08:47
deku2026 and others added 2 commits March 6, 2026 16:35
- migrate KDDockWidgets and Qt usage to vcpkg and remove vendored KDDockWidgets submodule
- update CMake presets/workflows for clang-cl on Windows and FASTBuild-based Linux CI
- add Linux self-hosted CI pipeline and align CodeQL workflow to Linux toolchain
- apply Qt/FFmpeg API compatibility updates and broad warning cleanup for modern compilers
- update docs/scripts to match the new dependency and CI model

Squashed commit history (origin/main..previous HEAD):
0602b3e ci: add Linux CI workflow and presets for self-hosted Docker runner
4159524 fix: robust FASTBuild install and restrict self-hosted to internal PRs
170eb57 ci: use clang for Linux CI, add overlay triplet for vcpkg
b39f4b3 fix: install clang-20 via LLVM apt repo for C++20 concepts support
53accbf fix: install g++ for libstdc++ headers, verbose FASTBuild download
2e167ff fix: Linux FASTBuild binary is lowercase (fbuild not FBuild)
e466bd6 fix: install libstdc++-14-dev for C++20 headers on Ubuntu 20.04
b2dddca ci(linux): switch Docker image to ubuntu-noble (24.04)
80e9a05 ci(linux): add nasm for ffmpeg build
4e1a3bf fix(linux): set CMAKE_SYSTEM_PROCESSOR in clang toolchain
f18e708 fix(linux): separate FASTBuild cachetrim from build step
a8cabf9 fix(ci): remove CMAKE_COMPILE_WARNING_AS_ERROR from CI presets
09b8bdf fix: suppress -Wgnu-line-marker for FASTBuild+clang builds
6a374ae fix(linux): add fontconfig, freetype, EGL dev packages for Qt6 linking
e2d17f0 fix: FASTBuild build preset and deprecated Qt API cleanup
b1db3d3 fix: migrate deprecated Qt6 and FFmpeg APIs to modern equivalents
c335fc3 fix: replace foreach with range-for on std::vector containers
b96fcb9 fix: replace remaining foreach on std::vector with range-for
8a133e9 fix: replace foreach on std::vector in header files
f1bb435 fix: replace all remaining foreach on std::vector with range-for
cdd0689 fix: replace foreach on TimeRangeList with range-for
e7b7dc5 fix: replace foreach on std::vector<NodeKeyframe*> with range-for
6e1fce1 fix: handle OIIO USTRINGHASH enum, enable MSVC C4062
7357076 refactor: replace all foreach with range-for, upgrade MSVC warnings
35c8853 build: switch to clang-cl on Windows with C++23
437d337 build: use QT_DISABLE_DEPRECATED_BEFORE, fix deprecated Qt6 APIs
1facf69 Migrate Qt and KDDockWidgets to vcpkg
e8aefb2 Fix linux vcpkg host triplet setup
974a8d8 Fix linux libxcrypt dependency in CI
3e16799 Fix dbus configure on linux clang triplet
db0f710 install bison
380e4c6 add install flex
0dc94d3 qtbase linux ci
ec34aab Disable qt Android autodetect on linux triplet
44bb0df Fix Linux clang triplet cross-compile mode
961bdae ci: fix linux kddockwidgets Qt tools path
3af61a9 ci: simplify linux triplet usage
05cbeb5 build: remove obsolete linux chainload toolchain
e826146 ci: remove linux Qt tools workaround
8906b7f ci: add X11 SM dev deps for qtbase
fb4df6b build: preload Qt6WidgetsPrivate for kddockwidgets
532469e build: import KDBindings before KDDockWidgets
922b249 build: import nlohmann_json for KDDockWidgets
42a5231 ci: use dynamic Linux triplet with FASTBuild
24a6a78 build: remove obsolete Qt6WidgetsPrivate preload
3cc52ea ci: disable auto-cancel for workflow concurrency
3659e82 ci: set default werror and move CodeQL to linux
a3adc64 add scan depth
fa4e142 pause codeql.yml

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use a snapshot of selected_nodes_ when finding deselected nodes to preserve old foreach copy semantics and avoid in-loop mutation during range-for iteration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@deku2026 deku2026 force-pushed the ci/add-linux-build branch from fa4e142 to 887e361 Compare March 6, 2026 09:35
@deku2026 deku2026 merged commit 5bdb875 into main Mar 6, 2026
3 checks passed
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