Cockatrice/.github/workflows
BruebachL 06e3d96308
[CI] Size compiler caches for one configuration and split the Fedora leg (#7772)
The bounds in #7667 were set below what one build configuration writes, so
ccache filled to its limit and evicted the entries the next build was about to
ask for. The probe measured what that costs: a 6G cache on one leg served 1059
of 1059 calls and the 700M bound on the same leg served 14%. The quota also
went to legs that finish under the Windows leg, which has no compiler cache.

Debug information is most of an object's size. A measured Arch Debug
configuration is 1.2 GB with the built-in flags and 660 MB at -g1; Debian 13
Release is 1.1 GB and 614 MB. CI therefore builds every non-tag leg at level 1
through a new COCKATRICE_DEBUG_INFO_LEVEL option, which stays empty by default
so local, distro and release builds are unchanged. Level 1 keeps file and line,
which is what a failing test or a sanitizer backtrace reports. Tags and the
nightly legs keep full DWARF for the Sentry symbols.

With one configuration at half the size, the quota goes to fewer legs at a size
that holds one whole configuration, and the legs that duplicate another leg's
coverage give their cache up: Servatrice, Ubuntu 26.04 behind the sanitize leg
of the same distro, macOS 15 and macOS 27 Debug behind macOS 14. Their keys
leave LIVE_CCACHE_KEYS, so prune-caches reclaims the existing entries.

The single Fedora leg built Debug for the suite and Release for the package in
one job (measured on Fedora 44: 30.8 min, the only leg above Windows), so the
package compile queued behind the debug one while one 1.6 GB cache held two
configurations. Fedora 45 now runs as two legs with one cache each, in
parallel.

The option reaches compile.sh inside the container through docker.sh, and
compile.sh turns it into the CMake flag.

Bounds: Arch 850M, Debian 13 800M, Fedora 45 debug 850M and release 800M,
Ubuntu 26.04 sanitize 1200M, macOS 14 800M. That is 5.3 GB of compiler cache
on top of roughly 4.5 GB of buildkit, vcpkg, Qt and CodeQL entries.

Windows still sets the pull-request wall clock: 29.5 min, 23.7 of it compiling
with no compiler cache, because ccache and sccache cannot store the 711 of 1054
translation units that use PCH under MSVC (#7381). That is a separate trial.

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-11-06 10:41:53 +01:00
..
codeql.yml [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
desktop-build.yml [CI] Size compiler caches for one configuration and split the Fedora leg (#7772) 2026-11-06 10:41:53 +01:00
desktop-lint.yml [CI] Minimal GitHub Actions permissions (#7165) 2026-08-23 11:42:47 +02:00
docker-release.yml [CI] Give ccache room to hold a configuration (#7667) 2026-11-04 10:06:56 +01:00
documentation-build.yml [Docs] Add app logo to main page + cleanup (#7471) 2026-10-10 23:48:37 +02:00
translations-pull.yml [CI] Fix permissions for automations around translations (#7394) 2026-10-04 20:20:28 +02:00
translations-push.yml [CI] Fix permissions for automations around translations (#7394) 2026-10-04 20:20:28 +02:00
vcpkg-cache-import.yml [CI] Cover the legacy distros and the slow macOS runner in a nightly (#7668) 2026-11-04 07:42:35 +01:00