ci/cd: move Fedora to 43 and speed up its dnf installs

Fedora 41 is EOL, so its mirrors moved to the slow archive: the first
dnf transaction took ~7 minutes in the last CD run. Use the current
fedora:43 image (all dependency names verified against F41 and F43) and
skip weak dependencies / download in parallel in both dnf calls.
This commit is contained in:
2026-09-24 17:48:23 +08:00
parent 133b139036
commit f817483e4e
2 changed files with 16 additions and 8 deletions
+8 -4
View File
@@ -10,7 +10,7 @@ permissions:
contents: write contents: write
# One matrix, seven platforms, the same environments CI tests in (see # One matrix, seven platforms, the same environments CI tests in (see
# .github/workflows/ci.yml): Debian 12 / Fedora 41 / Arch / openKylin x64 # .github/workflows/ci.yml): Debian 12 / Fedora 43 / Arch / openKylin x64
# and arm64 containers plus the macOS and Windows hosts. Every package is # and arm64 containers plus the macOS and Windows hosts. Every package is
# built from scratch — no vcpkg/cargo caches: a restored vcpkg_installed # built from scratch — no vcpkg/cargo caches: a restored vcpkg_installed
# or target tree has masked packaging problems before (stale ports, # or target tree has masked packaging problems before (stale ports,
@@ -44,7 +44,7 @@ jobs:
runner: warp-ubuntu-latest-x64-32x runner: warp-ubuntu-latest-x64-32x
triplet: x64-linux triplet: x64-linux
artifact: linux-fedora artifact: linux-fedora
container: '{"image":"fedora:41","options":"--shm-size=8g"}' container: '{"image":"fedora:43","options":"--shm-size=8g"}'
- name: Arch - name: Arch
platform: linux platform: linux
distro: arch distro: arch
@@ -95,7 +95,7 @@ jobs:
shell: bash shell: bash
run: | run: |
case "${{ matrix.distro }}" in case "${{ matrix.distro }}" in
fedora) dnf install -y git curl wget which ;; fedora) dnf install -y --setopt=install_weak_deps=False --setopt=max_parallel_downloads=16 git curl wget which ;;
arch) pacman -Sy --noconfirm git curl wget which ;; arch) pacman -Sy --noconfirm git curl wget which ;;
debian|openkylin) apt-get update && apt-get install -y git curl ca-certificates wget ;; debian|openkylin) apt-get update && apt-get install -y git curl ca-certificates wget ;;
esac esac
@@ -184,7 +184,11 @@ jobs:
if: matrix.distro == 'fedora' if: matrix.distro == 'fedora'
shell: bash shell: bash
run: | run: |
dnf install -y \ # Fedora 41 is EOL (its mirrors moved to the slow archive), so
# the matrix uses the current release; weak dependencies (docs,
# fonts, optional tooling) are skipped and downloads run wide.
dnf install -y --setopt=install_weak_deps=False \
--setopt=max_parallel_downloads=16 \
gcc gcc-c++ clang clang-devel cmake pkgconf-pkg-config nasm \ gcc gcc-c++ clang clang-devel cmake pkgconf-pkg-config nasm \
git curl zip unzip tar python3 patch xz which \ git curl zip unzip tar python3 patch xz which \
pipewire-devel jack-audio-connection-kit-devel \ pipewire-devel jack-audio-connection-kit-devel \
+8 -4
View File
@@ -16,7 +16,7 @@ permissions:
contents: read contents: read
# One matrix, seven platforms: the three Linux-family packaging distros # One matrix, seven platforms: the three Linux-family packaging distros
# (Debian 12, Fedora 41, Arch), openKylin on x64 and arm64, macOS and # (Debian 12, Fedora 43, Arch), openKylin on x64 and arm64, macOS and
# Windows. The environments match .github/workflows/cd.yml exactly (same # Windows. The environments match .github/workflows/cd.yml exactly (same
# container images, same dependency lists, same runner sizes), so a # container images, same dependency lists, same runner sizes), so a
# "passes CI, fails CD" dependency drift is caught here first. # "passes CI, fails CD" dependency drift is caught here first.
@@ -48,7 +48,7 @@ jobs:
arch: x64 arch: x64
runner: warp-ubuntu-latest-x64-8x runner: warp-ubuntu-latest-x64-8x
triplet: x64-linux triplet: x64-linux
container: '{"image":"fedora:41","options":"--shm-size=8g"}' container: '{"image":"fedora:43","options":"--shm-size=8g"}'
- name: Arch - name: Arch
platform: linux platform: linux
distro: arch distro: arch
@@ -95,7 +95,7 @@ jobs:
shell: bash shell: bash
run: | run: |
case "${{ matrix.distro }}" in case "${{ matrix.distro }}" in
fedora) dnf install -y git curl wget which ;; fedora) dnf install -y --setopt=install_weak_deps=False --setopt=max_parallel_downloads=16 git curl wget which ;;
arch) pacman -Sy --noconfirm git curl wget which ;; arch) pacman -Sy --noconfirm git curl wget which ;;
debian|openkylin) apt-get update && apt-get install -y git curl ca-certificates wget ;; debian|openkylin) apt-get update && apt-get install -y git curl ca-certificates wget ;;
esac esac
@@ -187,7 +187,11 @@ jobs:
if: matrix.distro == 'fedora' if: matrix.distro == 'fedora'
shell: bash shell: bash
run: | run: |
dnf install -y \ # Fedora 41 is EOL (its mirrors moved to the slow archive), so
# the matrix uses the current release; weak dependencies (docs,
# fonts, optional tooling) are skipped and downloads run wide.
dnf install -y --setopt=install_weak_deps=False \
--setopt=max_parallel_downloads=16 \
gcc gcc-c++ clang clang-devel cmake pkgconf-pkg-config nasm \ gcc gcc-c++ clang clang-devel cmake pkgconf-pkg-config nasm \
git curl zip unzip tar python3 patch xz which \ git curl zip unzip tar python3 patch xz which \
pipewire-devel jack-audio-connection-kit-devel \ pipewire-devel jack-audio-connection-kit-devel \