Skip to content

Commit bc24efb

Browse files
htekdevCopilot
andcommitted
feat: add re-509 macos-15-arm64 swiftlint missing, update re-268 ubuntu-22.04 retirement dates
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent c89a700 commit bc24efb

2 files changed

Lines changed: 128 additions & 13 deletions

File tree

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
id: runner-environment-509
2+
title: 'macos-15 (Arm64) Missing SwiftLint Despite Readme Listing It as Installed'
3+
category: runner-environment
4+
severity: error
5+
tags:
6+
- macos-15
7+
- arm64
8+
- swiftlint
9+
- swift
10+
- homebrew
11+
- tool-not-found
12+
- runner-readme
13+
patterns:
14+
- regex: 'swiftlint.*command not found|command not found.*swiftlint'
15+
flags: 'i'
16+
- regex: 'No such file or directory.*swiftlint|swiftlint.*No such file or directory'
17+
flags: 'i'
18+
- regex: 'which swiftlint.*$|swiftlint: not found'
19+
flags: 'im'
20+
error_messages:
21+
- "/Users/runner/work/_temp/....sh: line 2: swiftlint: command not found"
22+
- "ls: /opt/homebrew/bin/swiftlint: No such file or directory"
23+
- "ls: /usr/local/bin/swiftlint: No such file or directory"
24+
root_cause: |
25+
The macOS-15 runner image comes in two architecture variants: `macos-15` (Arm64, the default
26+
when you specify `runs-on: macos-15`) and `macos-15-intel` (Intel/x86_64). These two variants
27+
do NOT have identical toolsets.
28+
29+
SwiftLint is preinstalled on `macos-15-intel` but is NOT preinstalled on `macos-15` (Arm64).
30+
The official Readme linked from search engines and the runner-images repository
31+
(`images/macos/macos-15-Readme.md`) documents the Intel variant's software list. This creates
32+
a documentation mismatch: the Readme confirms SwiftLint is "installed", but workflows
33+
targeting the default `macos-15` label (which resolves to Arm64) will fail with
34+
"command not found".
35+
36+
This affects any workflow that:
37+
- Runs `swiftlint` directly (e.g., `run: swiftlint .`)
38+
- Uses a SwiftLint GitHub Action that expects the binary to be pre-available
39+
- Migrated from `macos-14` or `macos-latest` (previously Intel) to `macos-15` (now Arm64)
40+
41+
Source: runner-images#14239 (June 15, 2026, open)
42+
fix: |
43+
Install SwiftLint explicitly in your workflow using Homebrew before running it. This is the
44+
recommended approach for Arm64 runners and ensures a pinnable, reproducible version:
45+
46+
Option 1 (install via brew): Add a step to install SwiftLint with `brew install swiftlint`.
47+
Option 2 (use mint): Use Mint package manager to install a pinned version.
48+
Option 3 (Intel runner): Use `macos-15-intel` if your workflow specifically requires the
49+
Intel variant and you need the preinstalled SwiftLint without additional setup.
50+
51+
Note: Installing via Homebrew on Arm64 runners adds ~30–90 seconds to workflow time.
52+
fix_code:
53+
- language: yaml
54+
label: "Install SwiftLint via Homebrew on macos-15 (Arm64)"
55+
code: |
56+
jobs:
57+
lint:
58+
runs-on: macos-15 # Arm64 — SwiftLint not preinstalled
59+
steps:
60+
- uses: actions/checkout@v4
61+
- name: Install SwiftLint
62+
run: brew install swiftlint
63+
- name: Run SwiftLint
64+
run: swiftlint .
65+
- language: yaml
66+
label: "Pin SwiftLint version with brew install --formula"
67+
code: |
68+
jobs:
69+
lint:
70+
runs-on: macos-15
71+
steps:
72+
- uses: actions/checkout@v4
73+
- name: Install pinned SwiftLint
74+
run: |
75+
brew install swiftlint
76+
swiftlint version
77+
- name: Lint
78+
run: swiftlint lint --reporter github-actions-logging
79+
- language: yaml
80+
label: "Use norio-nomura/action-swiftlint action (installs SwiftLint automatically)"
81+
code: |
82+
jobs:
83+
lint:
84+
runs-on: macos-15
85+
steps:
86+
- uses: actions/checkout@v4
87+
- name: SwiftLint
88+
uses: norio-nomura/action-swiftlint@3.2.1
89+
prevention:
90+
- "Never assume tool availability based on the runner-images Readme without confirming which
91+
architecture variant the Readme describes. The macos-15-Readme.md covers Intel (macos-15-intel),
92+
not the default Arm64 runner."
93+
- "Explicitly install tools you depend on rather than relying on preinstalled versions — this
94+
also gives you control over the version and avoids silent upgrades breaking your workflow."
95+
- "When migrating from macOS Intel runners (macos-14, macos-latest prior to macos-26) to
96+
macos-15 or macos-26, audit your toolchain assumptions: Arm64 and Intel images do not have
97+
identical preinstalled software."
98+
- "Add a toolchain validation step early in your workflow (`which swiftlint && swiftlint version`)
99+
to fail fast with a clear message rather than failing deep in your lint/build steps."
100+
docs:
101+
- url: "https://github.com/actions/runner-images/issues/14239"
102+
label: "runner-images#14239: macos-15 runner claims swiftlint is installed but it is not found (June 2026)"
103+
- url: "https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md"
104+
label: "macos-15 (Intel) runner image installed software Readme"
105+
- url: "https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories"
106+
label: "GitHub Docs: GitHub-hosted runner hardware and OS specifications"

errors/runner-environment/ubuntu-2204-deprecation-brownout.yml

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,30 @@ patterns:
1717
- regex: 'No hosted runner matching.*ubuntu-22\.04'
1818
flags: 'i'
1919
error_messages:
20-
- "DEPRECATION NOTICE: The ubuntu-22.04 image will be deprecated on <DATE>. Please update your workflows to use ubuntu-24.04 instead."
21-
- "The ubuntu-22.04 runner image will not be supported after <DATE>. Migrate to ubuntu-24.04."
20+
- "DEPRECATION NOTICE: The ubuntu-22.04 image will be deprecated on September 17, 2026. Please update your workflows to use ubuntu-24.04 instead."
21+
- "The ubuntu-22.04 runner image will not be supported after April 17, 2027. Migrate to ubuntu-24.04."
2222
- "No hosted runner matching the label 'ubuntu-22.04' was found"
2323
root_cause: |
2424
GitHub follows a phased retirement process for end-of-life runner images. For ubuntu-22.04
25-
(Jammy Jellyfish, EOL April 2027 for standard support), GitHub began deprecation in early 2025
26-
with annotation notices injected into workflow summaries, followed by scheduled "brownout"
27-
windows where the runner image was temporarily unavailable. During a brownout window, jobs
28-
queued with `runs-on: ubuntu-22.04` either wait indefinitely or immediately fail with a
29-
"No hosted runner found" error, depending on the brownout type.
25+
(Jammy Jellyfish), GitHub officially announced the deprecation timeline on June 16, 2026
26+
(runner-images#14254):
3027
31-
After the full retirement date, the runner label is removed entirely. Workflows still targeting
32-
`ubuntu-22.04` fail on every run with no runner available. The retirement does NOT affect
33-
self-hosted runners labelled ubuntu-22.04 — only GitHub-hosted runners.
28+
- **Deprecation begins**: September 17, 2026 — images remain available but queue times
29+
increase during peak hours.
30+
- **Full retirement**: April 17, 2027 — runner labels removed entirely; workflows fail.
31+
- **Brownout windows** (jobs will fail during these windows to raise awareness):
32+
- March 23, 2027: 14:00 UTC – 00:00 UTC
33+
- March 30, 2027: 14:00 UTC – 00:00 UTC
34+
- April 6, 2027: 14:00 UTC – 00:00 UTC
35+
- April 13, 2027: 14:00 UTC – 00:00 UTC
3436
35-
The pattern mirrors ubuntu-20.04 retirement (completed mid-2024). ubuntu-22.04 brownouts
36-
began April 2025 per GitHub Changelog entry "Actions: ubuntu-22.04 runner image deprecated".
37+
During a brownout window, jobs queued with `runs-on: ubuntu-22.04` or `runs-on: ubuntu-22.04-arm`
38+
immediately fail. After full retirement, the runner label is removed entirely and every run fails.
39+
40+
The retirement does NOT affect self-hosted runners labelled ubuntu-22.04 — only GitHub-hosted
41+
runners. ubuntu-22.04-arm is also affected. The pattern mirrors ubuntu-20.04 retirement
42+
(completed mid-2024). Earlier deprecation notices began April 2025 per GitHub Changelog entry
43+
"Actions: ubuntu-22.04 runner image deprecated".
3744
fix: |
3845
Update your `runs-on:` targets to `ubuntu-24.04` (or `ubuntu-latest`, which now maps to
3946
ubuntu-24.04). Before migrating, audit for ubuntu-22.04-specific toolchain assumptions:
@@ -76,8 +83,10 @@ prevention:
7683
- "Run a periodic workflow that validates your CI still passes on ubuntu-latest to catch image drift before retirement forces a migration."
7784
- "Check runner-images release notes before each minor ubuntu release to review tool changes that will affect your workflows."
7885
docs:
86+
- url: "https://github.com/actions/runner-images/issues/14254"
87+
label: "runner-images#14254: Ubuntu 22 deprecation timeline — Sept 17, 2026 deprecation, April 17, 2027 retirement"
7988
- url: "https://github.blog/changelog/2025-01-09-actions-ubuntu-22-deprecation/"
80-
label: "GitHub Changelog: ubuntu-22.04 deprecation announcement"
89+
label: "GitHub Changelog: ubuntu-22.04 initial deprecation announcement (2025)"
8190
- url: "https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md"
8291
label: "ubuntu-24.04 runner image installed software"
8392
- url: "https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources"

0 commit comments

Comments
 (0)