Skip to content

ci: run three macOS versions and split the libsecret tests out - #78

Merged
StuartMeeks merged 2 commits into
mainfrom
ci/20-21-macos-matrix-and-keyring-job
Aug 26, 2026
Merged

ci: run three macOS versions and split the libsecret tests out#78
StuartMeeks merged 2 commits into
mainfrom
ci/20-21-macos-matrix-and-keyring-job

Conversation

@StuartMeeks

Copy link
Copy Markdown
Owner

Fixes #20. Fixes #21.

Both required amending NextIteration.Standards first — StuartMeeks/NextIteration.Standards#23, merged — rather than editing this workflow locally. §3.0.1 is explicit that a repo editing its own ci.yml has forked it, not fixed it, and this repo is the one the standard's TODO calls "the reference implementation… the thing to copy from".

#20 — three macOS versions

macos-latest only ever exercised whichever release that alias currently points at. This is the only repo with a Security.framework P/Invoke layer (~1,170 lines across KeychainCredentialManager and KeychainInterop), and the Keychain backend is the one place an OS-version behaviour change surfaces as silently missing credentials rather than a build failure.

§3.1.1 now permits broadening the matrix without an exception, on the grounds that broadening cannot cause the failure that clause guards against — a shipped path going unexecuted. Narrowing still needs one.

#21 — the libsecret tests get their own job

As a Linux-guarded step inside test, the keyring setup made test (ubuntu-latest) report one result for two unrelated things: the portable tests and the libsecret ones. Now:

A libsecret regression now names itself instead of hiding inside a matrix leg that is green for other reasons. The ci gate names the new job, so it cannot be green while that job fails.

Verified before pushing

Amending a shared template can break repos that were already conformant, so I ran the audit's own comparison against both working trees:

Result
This ci.yml vs amended template, through the exception machinery reconciles, 111 lines each side
Auth.Providers, untouched, vs amended template reconciles

What to watch on this PR

Its own CI is the real test — it is the first run of the five-way matrix and the new job. Specifically worth checking that test (ubuntu-latest) now reports libsecret as skipped while test-linux-keyring reports it run, since that split is the entire point of #21.

🤖 Generated with Claude Code

StuartMeeks and others added 2 commits August 26, 2026 12:29
)

Both changes needed NextIteration.Standards amending first (its PR #23), not a
local ci.yml edit -- 3.0.1 is explicit that a repo editing its own workflow has
forked it, not fixed it.

#20: the matrix names macos-13, macos-14 and macos-15 rather than macos-latest.
This is the only repo with a Security.framework P/Invoke layer (~1,170 lines
across KeychainCredentialManager and KeychainInterop), and macos-latest tests it
against whichever release the alias points at today. The Keychain backend is the
one place an OS-version behaviour change surfaces as silently missing
credentials rather than a build failure. 3.1.1 now permits broadening the matrix
without an exception, since broadening cannot cause the failure that clause
guards against.

#21: the gnome-keyring-daemon setup moves out of the matrix into a
test-linux-keyring job. As a Linux-guarded step inside `test` it made
test (ubuntu-latest) report one result for two unrelated things -- the portable
tests and the libsecret ones. Now the matrix leg reports the libsecret tests
skipped (they self-report since #46) and the new job reports them run, so a
libsecret regression names itself instead of hiding in a leg that is green for
other reasons. The ci gate names the new job, so it cannot pass while the job
fails.

Verified against the amended template through the exception machinery before
pushing: 111 lines each side. Auth.Providers still reconciles unchanged, so the
template amendment does not disturb the repos that were already conformant.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The first attempt used macos-13/14/15 as #20 suggested. macos-13 has no runner:
its job sat queued with runner unassigned for over ten minutes while ubuntu,
windows, macos-14, macos-15 and test-linux-keyring all completed. GitHub has
retired that label, so including it would hang every CI run rather than add
coverage.

macos-14 and macos-15 both scheduled and passed, which is still two concrete
macOS versions where there was one moving alias.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@StuartMeeks
StuartMeeks merged commit 3d2d167 into main Aug 26, 2026
11 checks passed
@StuartMeeks
StuartMeeks deleted the ci/20-21-macos-matrix-and-keyring-job branch August 26, 2026 05:05
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.

libsecret: split Linux keyring tests into their own CI job Keychain: batch-test against multiple macOS versions via CI matrix

1 participant