[CI] Cover the legacy distros and the slow macOS runner in a nightly

Every pull request built ten Linux legs and five macOS/Windows legs, including
the previous release of each distro and macOS 13 on the Intel runner. Those
legs exist to catch a regression for users on an older distribution, which a
change being reviewed almost never does, and macOS 13 Intel is the slowest leg
of the matrix - 28 minutes against 19 for the rest.

They now run in a nightly build of the default branch and on tag builds, which
is when a change actually ships. Pull requests keep the current release of each
distro, the sanitizer leg and the coverage leg.
This commit is contained in:
Lukas Brübach 2026-10-26 05:18:09 +01:00
parent 3f7aa4ca82
commit 00b33f6960

View file

@ -33,6 +33,11 @@ on:
- 'CMakeLists.txt' - 'CMakeLists.txt'
- 'vcpkg.json' - 'vcpkg.json'
- 'vcpkg' # needed to match submodule bumps (gitlink) - 'vcpkg' # needed to match submodule bumps (gitlink)
# The legs the pull-request matrix leaves out run here instead, so the legacy distros and
# the slow macOS runner stay covered without gating a pull request on them. Tags still
# build every leg, because a tag is what ships.
schedule:
- cron: '23 3 * * *'
# Cancel earlier, unfinished runs of this workflow on the same branch (unless on tag --> release) # Cancel earlier, unfinished runs of this workflow on the same branch (unless on tag --> release)
concurrency: concurrency:
@ -152,6 +157,7 @@ jobs:
- distro: Debian - distro: Debian
version: 12 version: 12
nightly: yes # previous stable, still covered by the nightly
package: DEB package: DEB
test: skip # Running tests on all distros is superfluous test: skip # Running tests on all distros is superfluous
@ -163,6 +169,7 @@ jobs:
- distro: Fedora - distro: Fedora
version: 43 version: 43
nightly: yes # previous release, still covered by the nightly
package: RPM package: RPM
test: skip # Running tests on all distros is superfluous test: skip # Running tests on all distros is superfluous
@ -179,6 +186,7 @@ jobs:
- distro: Ubuntu - distro: Ubuntu
version: 24.04 version: 24.04
nightly: yes # previous LTS, still covered by the nightly
package: DEB package: DEB
test: skip # Running tests on all distros is superfluous test: skip # Running tests on all distros is superfluous
@ -219,6 +227,9 @@ jobs:
name: ${{ matrix.distro }} ${{ matrix.version }}${{ matrix.variant && format(' {0}', matrix.variant) || '' }} name: ${{ matrix.distro }} ${{ matrix.version }}${{ matrix.variant && format(' {0}', matrix.variant) || '' }}
needs: configure needs: configure
# A leg marked nightly runs in the nightly and on tags, never on a pull request or a
# merge, so nothing that reviews a change waits for a distro nobody is changing for.
if: matrix.nightly != 'yes' || github.event_name == 'schedule' || github.ref_type == 'tag'
runs-on: ubuntu-latest # https://github.com/actions/runner-images runs-on: ubuntu-latest # https://github.com/actions/runner-images
continue-on-error: ${{ matrix.allow-failure == 'yes' }} continue-on-error: ${{ matrix.allow-failure == 'yes' }}
timeout-minutes: 70 timeout-minutes: 70
@ -453,6 +464,7 @@ jobs:
target: 13 # EOL 2025-09-15 target: 13 # EOL 2025-09-15
runner: macos-15-intel # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md runner: macos-15-intel # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
# macos-26-intel is very slow and fails in CPack during DMG config if not increasing Finder timeout # macos-26-intel is very slow and fails in CPack during DMG config if not increasing Finder timeout
nightly: yes # EOL target on the slowest runner: nightly and tags only
ccache_eviction_age: 7d ccache_eviction_age: 7d
cmake_generator: Ninja cmake_generator: Ninja
@ -543,6 +555,7 @@ jobs:
name: ${{ matrix.os }} ${{ matrix.target }}${{ matrix.soc == 'Intel' && ' Intel' || '' }}${{ matrix.type == 'Debug' && ' Debug' || '' }} name: ${{ matrix.os }} ${{ matrix.target }}${{ matrix.soc == 'Intel' && ' Intel' || '' }}${{ matrix.type == 'Debug' && ' Debug' || '' }}
needs: [configure, vcpkg-baseline] needs: [configure, vcpkg-baseline]
if: matrix.nightly != 'yes' || github.event_name == 'schedule' || github.ref_type == 'tag'
runs-on: ${{ matrix.runner }} runs-on: ${{ matrix.runner }}
timeout-minutes: 100 timeout-minutes: 100
env: env: