Cockatrice/.ci
Lukas Brübach 6f3297a4a0 [CI] Size compiler caches for one configuration and split the Fedora leg
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 26 Debug behind macOS 14. Their keys
leave LIVE_CCACHE_KEYS, so prune-caches reclaims the existing entries.

Fedora 44 built Debug for the suite and Release for the package in one job, so
the package compile queued behind the debug one and the leg took 30.8 min - the
only leg above Windows - while one 1.6 GB cache held two configurations. It is
split into two legs with one cache each, running 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 44 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.
2026-11-04 13:52:05 +01:00
..
Arch [Security] Use a CSPRNG for salts, tokens, and RNG seeding (#7192) 2026-09-04 13:49:18 +02:00
Debian12 [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
Debian13 [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
Fedora43 [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
Fedora44 [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
Servatrice_Debian12 [CI] Key the vcpkg binary cache per ABI and let pull requests heal it (#7377) 2026-10-14 08:14:16 +02:00
Ubuntu24.04 [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
Ubuntu26.04 [CrashReporting] Mock crash-report dialog and reporting preference (#7521) 2026-10-19 14:57:03 +02:00
compile.sh [CI] Size compiler caches for one configuration and split the Fedora leg 2026-11-04 13:52:05 +01:00
docker.sh [CI] Size compiler caches for one configuration and split the Fedora leg 2026-11-04 13:52:05 +01:00
lint_cpp.sh CI: Print colored diff for lint check (#6975) 2026-06-08 19:19:28 +02:00
macos.entitlements Sign macOS Releases (#5396) 2025-01-09 22:32:53 -05:00
name_build.sh CI: Cleanup (#6677) 2026-03-09 21:32:47 +01:00
prep_release.sh escape ampersand (#6900) 2026-05-21 22:02:09 +02:00
release_template.md Update & add arch/platform labels in release template (#7149) 2026-08-23 12:56:00 +02:00
resolve_latest_aqt_qt_version.sh CI: Resolve to latest Qt version in range for Windows as well (#6700) 2026-03-15 17:47:48 +01:00
thin_macos_qtlib.sh ci: make fat qt libs thin (#6281) 2026-01-04 01:00:05 +01:00
update_translation_source_strings.sh make translation update script more specific in line selection (#4993) 2024-01-25 23:28:23 +01:00
update_translation_source_strings_template.md fix transifex link (#5969) 2025-06-09 02:05:24 +02:00