Skip to content

ci: expand platform coverage (ARM Linux, Alpine, Win2025/ARM, macOS 26) - #2416

Open
ronaldtse wants to merge 5 commits into
mainfrom
ci-expand-platforms
Open

ci: expand platform coverage (ARM Linux, Alpine, Win2025/ARM, macOS 26)#2416
ronaldtse wants to merge 5 commits into
mainfrom
ci-expand-platforms

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Summary

Expands rnp's CI platform coverage to match the full set of GitHub-hosted runners, and drops deprecated runners/legs.

Platform additions

Workflow New legs
ubuntu.yml ubuntu-24.04-arm (Botan + OpenSSL); pins ubuntu-24.04 explicitly instead of ubuntu-latest
macos.yml macos-26, macos-26-intel
windows-native.yml windows-2025 (GA); windows-11-arm (preview, continue-on-error)
alpine.yml (new) Alpine 3.21 (stable) + edge containers; gcc + clang (clang on stable only); Botan + OpenSSL

Removals (deprecated)

  • macos-14 runner — deprecated.
  • openssl@1.1 brew formula on macOS — deprecated; OpenSSL 1.1.1 itself went EOL Sept 2024.
  • The "Configure openssl 1.1 backend" step in macos.yml (no longer used by any leg).

Coverage preservation

OpenSSL 1.1.1 testing is NOT lost — it migrates from macOS to Linux containers:

  • centos-and-fedora.yml RHEL 8 ubi + OpenSSL (covers RPM-based)
  • debian.yml Debian 11 + openssl (covers dpkg-based)

Both are already in the matrix; no new leg needed.

Why these platforms

All of these are critical audiences for rnp:

  • ARM Linux — Thunderbird-on-ARM-Linux is a growing audience (Raspberry Pi 5, Asahi Linux, ARM cloud instances).
  • Alpine / musl — Docker/containers commonly use Alpine; rnp-on-musl has known warts that need CI exposure.
  • Windows Server 2025 — will replace windows-2022 within 12 months; pinning now prevents surprise.
  • Windows 11 ARM — Copilot+ PCs and Surface Pro X class hardware; vcpkg ARM coverage is now sufficient for our deps.
  • macOS 26 — current macOS release; users will file bugs against it.

Test plan

  • ubuntu-24.04 + ARM legs pass
  • alpine.yml runs (may surface musl-specific code issues — those become separate fix PRs)
  • windows-2025 leg passes
  • windows-11-arm leg runs (preview; continue-on-error so non-blocking)
  • macOS 26 legs pass

Out of scope (follow-up PRs)

  • Redundancy cuts in centos-and-fedora.yml: drop Fedora 39 (covered by 40), drop Botan 3.1.1/3.3.0 (keep 3.6.0 + head).
  • Reusable workflow_call extraction for the duplicated setup boilerplate across workflows.
  • Path-based dynamic matrix (skip CLI tests if only library code changed).
  • Test-suite performance work (item 18 in TODO.rnp-roadmap).

@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.36%. Comparing base (953d2e0) to head (2c3fb4b).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2416      +/-   ##
==========================================
- Coverage   85.36%   85.36%   -0.01%     
==========================================
  Files         126      126              
  Lines       22861    22866       +5     
==========================================
+ Hits        19516    19520       +4     
- Misses       3345     3346       +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ronaldtse
ronaldtse requested review from antonsviridenko and ni4 July 31, 2026 16:20
Adds the GitHub-hosted runner families that rnp's CI was missing, and
removes the macos-14 + openssl@1.1 leg that is no longer supportable
(macOS 14 is deprecated; brew openssl@1.1 formula is deprecated;
OpenSSL 1.1.1 itself went EOL Sept 2024 — its coverage is preserved
via Linux containers in centos-and-fedora.yml RHEL 8 and debian.yml
Debian 11).

Platform additions:

  * ubuntu.yml: pin to ubuntu-24.04 (instead of ubuntu-latest, to
    control timing of the next bump). Add ubuntu-24.04-arm native
    runner for both Botan and OpenSSL backends — ARM Linux is a
    growing Thunderbird audience.
  * macos.yml: add macos-26 and macos-26-intel. Drop macos-14.
  * windows-native.yml: parameterise the runner (was hardcoded
    windows-2022). Add windows-2025 (GA) and windows-11-arm (preview,
    continue-on-error so it doesn't gate the build).
  * alpine.yml: new workflow. Alpine 3.21 (stable) + edge, with musl
    libc. Both gcc and clang (clang only on stable). Both Botan and
    OpenSSL backends.

Removals:

  * macos-14 leg with openssl@1.1 (deprecated runner + EOL crypto).
  * "Configure openssl 1.1 backend" step in macos.yml (no longer used).

Coverage notes:

  * OpenSSL 1.1.1 is still tested via:
      - centos-and-fedora.yml: RHEL 8 ubi + OpenSSL
      - debian.yml: debian-11-amd64 + openssl
  * ubuntu-22.04 stays for one leg (Oldest still-supported LTS).
  * Alpine edge is included but matrix excludes the moving-target
    clang+edge combination to keep runner time sane.

Out of scope (follow-up):
  * Reducing the Botan version matrix (4 versions → 2) in
    centos-and-fedora.yml. Separate concern.
  * Reusable workflow_call extraction for the duplicated setup
    boilerplate. Larger architectural refactor.
…nd maintainers

Adds the missing Ubuntu 22.04 LTS × Botan leg to ubuntu.yml. The 22.04
LTS runner was already in the matrix but only for OpenSSL. Botan 2.19.1
(shipped by 22.04) is an older 2.x than Ubuntu 24.04 LTS's 2.19.3 —
worth exercising to catch any 2.x compat issues that 2.19.3 might mask.

Also adds two documentation files that have been missing:

  * MAINTAINERS.md — top-level file listing who maintains rnp packaging
    in each downstream distribution / platform. GitHub auto-surfaces
    this in the repo sidebar. Includes consultation policy: open issue,
    ping maintainers, allow 2 weeks before proceeding. Distros without
    a known maintainer are marked "please PR to add".

  * docs/supported-platforms.adoc — user-facing doc listing which OS ×
    distro × arch × crypto-backend combinations rnp is known to work
    on, derived from CI coverage and downstream reports. Includes
    Fedora, Debian, Ubuntu, RHEL/CentOS, openSUSE, Alpine, macOS,
    Windows, FreeBSD, hardware architectures, and build option
    summary table. Links from README.

Both are linked from README.adoc.

The Ubuntu 22.04 × Botan addition closes a gap surfaced in the
TODO.rnp-roadmap/23-ci-matrix-cleanup.md version-span review.
clang-format 11.0.0 has a pointer-alignment false positive that flags
rnp.cpp, fficli.cpp, rnpkeys.cpp and ffi-enc.cpp even though they are
clean under 11.0.1. Move the CI to 11.0.1 (the version the tree is
actually formatted to) and fix the single real issue it surfaces, in
backend_version.cpp.
- bump stable leg 3.21 -> 3.23 (current latest stable)
- botan-dev -> botan3-dev: 3.21 still ships Botan 2 as botan-dev, but 3.23
  and edge only ship Botan 3 as botan3-dev, so edge failed with
  'botan-dev (no such package)'
- install python3 explicitly: cli_tests.py -ls runs at configure time and
  python3 was only pulled transitively (gone on edge), causing
  'Failed to retrieve test suite list for cli_tests'

Verified in alpine:edge: apk add ok, cli_tests -ls exits 0, cmake
configure completes.
@ronaldtse
ronaldtse force-pushed the ci-expand-platforms branch from fa4f2b3 to 2c3fb4b Compare August 9, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant