You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: migrate Linux workflow to RunsOn self-hosted runners
Move the Linux build and debug-validation jobs from GitHub-hosted
runners to RunsOn ephemeral EC2 runners (qgc-ci-runs-on stack in
us-west-2, RunsOn v3.0.6). x86_64 builds now run on c8i.2xlarge,
ARM64 on c8g.2xlarge, the Debug+coverage test job on m8i.2xlarge —
all 8 vCPU, On-Demand, ubuntu24-full-* images.
Runner labels are inline in the workflow so this PR is self-contained
(named runner profiles in .github/runs-on.yml require the config on
the default branch first); the named profiles are kept in the tree
for the next workflow migration to reuse.
Caching: extras=s3-cache + runs-on/action@v2 transparently redirect
all existing actions/cache@v5 calls (ccache, Qt SDK, GStreamer, pipx,
apt, CPM) to the S3 bucket provisioned by the stack. runs-on/action
is a no-op on GitHub-hosted runners so the workflow stays portable.
Matrix cleanup: dropped the dual-purpose `matrix.os` field on the
build job (it was both a runner selector and a discriminator for two
size-analysis steps). matrix.arch is now the single discriminator;
the previous `matrix.os == 'ubuntu-22.04'` conditions on lines 128
and 135 now correctly read `matrix.arch == 'linux_gcc_64'`.
Both architectures build on Ubuntu 24.04 (was 22.04 for x64, 24.04
for ARM). This bumps the AppImage glibc baseline from 2.35 to 2.39;
older distros (RHEL 8, Ubuntu 20.04, Debian 11) won't run binaries
produced here.
Test execution restructured by label. cmake/QGCTest.cmake:164
auto-attaches RESOURCE_LOCK "MockLink" to every Integration test
because MockLink shares a LinkManager singleton and static
_nextVehicleSystemId counter; a single CTest invocation over both
labels with --parallel auto silently serialized everything on that
lock. Split into two passes:
- Run Unit Tests (parallel): -L Unit, --parallel auto. 151 Unit
tests with no shared state.
- Run Integration Tests (serial): -L Integration, --parallel 1.
37 Integration tests serialize on shared MockLink state.
Each pass writes its own junit + ctest output; downstream Analyze /
Report / Upload steps run once per pass. Coverage path picks up
.gcda from both passes via the existing find . -name '*.gcda'.
Tester runner uses volume=60gb (40GB default left ~1-2GB headroom
at peak with the Debug build + Qt SDK + caches + .gcda + scratch,
which silently killed the agent before any diagnostic could run).
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
0 commit comments