fix(ci): migrate to the latest macOS runners (#8335)

* fix(ci): replace retiring macOS 14 runners

Use the supported macOS 15 ARM64 image before the November 2 retirement. Keep the Intel release runner and existing test/build/release commands unchanged.

* fix(ci): use the latest macOS runner images
This commit is contained in:
Mohamed Boudra
2026-10-31 10:05:16 +07:00
committed by GitHub
parent 0a549945b5
commit 7b03f0ad21
4 changed files with 36 additions and 6 deletions
+2 -2
View File
@@ -281,10 +281,10 @@ jobs:
# otherwise has no server-test coverage. Scoped to the observer/watcher suites to
# bound runtime.
server-tests-macos:
name: server-tests (macos-14, file observation)
name: server-tests (macos-latest, file observation)
needs: changes
if: ${{ !cancelled() && (needs.changes.outputs.full != 'false' || needs.changes.outputs.server != 'false') }}
runs-on: macos-14
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
+2 -2
View File
@@ -100,10 +100,10 @@ jobs:
fail-fast: false
matrix:
include:
- runner: macos-14
- runner: macos-latest
electron_arch: arm64
node_heap_mb: 4096
- runner: macos-15-intel
- runner: macos-26-intel
electron_arch: x64
node_heap_mb: 8192
permissions:
+1 -1
View File
@@ -101,7 +101,7 @@ jobs:
run: nix build .#desktop -o result-desktop
build-desktop-darwin:
runs-on: macos-14
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
+31 -1
View File
@@ -24,7 +24,10 @@ const gatedCiJobs = new Map([
"server-integration-windows",
{ name: "server-integration (windows-latest)", contract: "server" },
],
["server-tests-macos", { name: "server-tests (macos-14, file observation)", contract: "server" }],
[
"server-tests-macos",
{ name: "server-tests (macos-latest, file observation)", contract: "server" },
],
["desktop-tests-ubuntu", { name: "desktop-tests (ubuntu-latest)", contract: "desktop" }],
["desktop-tests-windows", { name: "desktop-tests (windows-latest)", contract: "desktop" }],
["app-tests", { name: "app-tests", contract: "app" }],
@@ -649,3 +652,30 @@ process.exit(code);
});
}
});
// GitHub retires macOS 14 on 2026-11-02; brownouts already reject these jobs.
test("workflows avoid retired macOS 14 runners", () => {
for (const path of filesUnder(".github/workflows", (candidate) => /\.ya?ml$/.test(candidate))) {
assert.doesNotMatch(
readFileSync(new URL(path, repoRoot), "utf8"),
/macos-14(?:-large|-xlarge)?\b/,
path,
);
}
});
test("macOS jobs use latest runners while preserving release architectures", () => {
for (const [workflow, jobId] of [
[ciWorkflowPath, "server-tests-macos"],
[nixWorkflowPath, "build-desktop-darwin"],
]) {
assert.match(
jobBlocks(readFileSync(workflow, "utf8")).get(jobId).join("\n"),
/^ runs-on: macos-latest$/m,
);
}
const release = readFileSync(new URL(".github/workflows/desktop-release.yml", repoRoot), "utf8");
assert.match(release, /runner: macos-latest\n\s+electron_arch: arm64/);
// GitHub has no standard macos-latest-intel alias; use the newest Intel image.
assert.match(release, /runner: macos-26-intel\n\s+electron_arch: x64/);
});