@htekdev/actions-debugger 1.0.23 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/errors/caching-artifacts/artifact-minimum-retention-one-day.yml +153 -0
  2. package/errors/caching-artifacts/cache-api-propagation-delay-post-save.yml +128 -0
  3. package/errors/caching-artifacts/cache-backend-internal-error-skipped.yml +75 -0
  4. package/errors/caching-artifacts/cache-hit-step-id-case-sensitive-mismatch.yml +95 -0
  5. package/errors/caching-artifacts/cache-save-post-step-skipped-on-failure.yml +114 -0
  6. package/errors/concurrency-timing/deploy-pages-in-progress-deployment-wedged.yml +70 -0
  7. package/errors/concurrency-timing/deployment-review-timeout-expired.yml +88 -0
  8. package/errors/concurrency-timing/job-concurrency-scope-per-run-not-global.yml +81 -0
  9. package/errors/concurrency-timing/merge-queue-concurrency-cancel-blocks-all.yml +86 -0
  10. package/errors/concurrency-timing/reusable-workflow-github-workflow-context-cancel.yml +124 -0
  11. package/errors/concurrency-timing/runner-scale-set-jobs-never-start.yml +123 -0
  12. package/errors/concurrency-timing/runner-temp-dir-race-concurrent-workers.yml +90 -0
  13. package/errors/known-unsolved/artifact-download-url-unauthenticated-404.yml +98 -0
  14. package/errors/known-unsolved/checkout-v6-credentials-docker-run-manual.yml +105 -0
  15. package/errors/known-unsolved/concurrency-groups-repo-scoped-only.yml +138 -0
  16. package/errors/known-unsolved/matrix-256-job-limit.yml +142 -0
  17. package/errors/known-unsolved/merge-group-paths-filter-not-supported.yml +137 -0
  18. package/errors/known-unsolved/no-job-allow-failure.yml +73 -0
  19. package/errors/known-unsolved/schedule-cron-hours-long-queue-drift.yml +101 -0
  20. package/errors/permissions-auth/checkout-persist-credentials-token-write.yml +90 -0
  21. package/errors/permissions-auth/create-github-app-token-cross-job-token-revoked.yml +95 -0
  22. package/errors/permissions-auth/github-token-contents-write-missing-git-push.yml +117 -0
  23. package/errors/permissions-auth/org-actions-policy-blocks-unapproved-action.yml +106 -0
  24. package/errors/runner-environment/codeql-action-v2-deprecated.yml +110 -0
  25. package/errors/runner-environment/macos-26-openssl-3-system-library-breaking.yml +114 -0
  26. package/errors/runner-environment/macos-26-ruby-34-default-upgrade.yml +114 -0
  27. package/errors/runner-environment/macos-26-xcode-default-265-pin-required.yml +99 -0
  28. package/errors/runner-environment/macos-latest-label-switches-to-macos26.yml +127 -0
  29. package/errors/runner-environment/node20-removed-toolcache-default-node22.yml +104 -0
  30. package/errors/runner-environment/powershell-74-76-threadjob-module-rename.yml +124 -0
  31. package/errors/runner-environment/self-hosted-runner-not-found.yml +134 -0
  32. package/errors/runner-environment/self-hosted-runner-selinux-service-exec-failure.yml +116 -0
  33. package/errors/runner-environment/service-container-no-healthcheck.yml +158 -0
  34. package/errors/runner-environment/setup-node-v5-corepack-pnpm-not-found.yml +101 -0
  35. package/errors/runner-environment/setup-node-yarn-not-installed-self-hosted.yml +76 -0
  36. package/errors/runner-environment/setup-python-externally-managed-env-error.yml +95 -0
  37. package/errors/runner-environment/windows-2019-runner-retired-june2025.yml +118 -0
  38. package/errors/runner-environment/windows-2022-docker-daemon-not-started.yml +108 -0
  39. package/errors/silent-failures/cache-hit-output-string-not-boolean.yml +96 -0
  40. package/errors/silent-failures/checkout-lfs-pointer-not-content.yml +105 -0
  41. package/errors/silent-failures/reusable-workflow-output-skipped-contains-secret.yml +115 -0
  42. package/errors/silent-failures/setup-node-silent-download-exit-zero.yml +105 -0
  43. package/errors/silent-failures/setup-python-truncated-manifest-silent-exit.yml +111 -0
  44. package/errors/silent-failures/undefined-env-expression-empty-string-silent.yml +115 -0
  45. package/errors/silent-failures/windows-powershell-github-output-bash-syntax.yml +118 -0
  46. package/errors/triggers/fork-pr-first-time-contributor-approval-required.yml +142 -0
  47. package/errors/triggers/on-push-branches-glob-star-no-slash-match.yml +78 -0
  48. package/errors/triggers/pull-request-target-env-protection-default-branch-eval.yml +117 -0
  49. package/errors/triggers/required-status-check-renamed-never-passes.yml +87 -0
  50. package/errors/triggers/schedule-cron-self-hosted-runner-not-triggered.yml +107 -0
  51. package/errors/yaml-syntax/composite-action-run-shell-missing.yml +90 -0
  52. package/errors/yaml-syntax/composite-action-secrets-context-unavailable.yml +99 -0
  53. package/errors/yaml-syntax/github-script-octokit-renamed-to-github.yml +130 -0
  54. package/errors/yaml-syntax/labeler-v5-config-format-breaking.yml +67 -0
  55. package/errors/yaml-syntax/runs-on-expression-array-syntax-error.yml +121 -0
  56. package/errors/yaml-syntax/setup-go-matrix-version-float-coercion.yml +69 -0
  57. package/package.json +1 -1
@@ -0,0 +1,110 @@
1
+ id: runner-environment-061
2
+ title: "CodeQL Action v1/v2 Deprecated — Hard Failure with Upgrade Required Message"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - codeql
7
+ - code-scanning
8
+ - deprecated
9
+ - v2
10
+ - v3
11
+ - security
12
+ - breaking-change
13
+ patterns:
14
+ - regex: "CodeQL Action major versions v1 and v2 have been deprecated"
15
+ flags: "i"
16
+ - regex: "Please update all occurrences of the CodeQL Action in your workflow files to v3"
17
+ flags: "i"
18
+ - regex: "github/codeql-action/.*@v[12]\\b"
19
+ flags: "i"
20
+ error_messages:
21
+ - "Error: CodeQL Action major versions v1 and v2 have been deprecated. Please update all occurrences of the CodeQL Action in your workflow files to v3. For more information, see https://github.blog/changelog/2025-01-10-code-scanning-codeql-action-v2-is-now-deprecated/"
22
+ - "CodeQL Action v2 is now deprecated. Upgrade to v3."
23
+ root_cause: |
24
+ GitHub retired CodeQL Action major versions v1 and v2 in January 2025. After the
25
+ retirement date, any workflow referencing `github/codeql-action/*@v1` or
26
+ `github/codeql-action/*@v2` produces a hard failure with the above error message
27
+ and does NOT perform code scanning.
28
+
29
+ The CodeQL action family includes multiple steps that must ALL be updated together:
30
+ - `github/codeql-action/init@v2`
31
+ - `github/codeql-action/autobuild@v2`
32
+ - `github/codeql-action/analyze@v2`
33
+ - `github/codeql-action/upload-sarif@v2`
34
+ - `github/codeql-action/resolve-environment@v2`
35
+
36
+ Missing even one of these (leaving it at `@v2` while updating others to `@v3`)
37
+ causes the workflow to fail. Repos created before 2024 using the default
38
+ GitHub-provided Code Scanning setup workflow are the most common source of
39
+ stale v2 references.
40
+
41
+ This is distinct from the generic `deprecated-action-version-auto-rejected` pattern
42
+ (runner-environment-037) which covers specific minor/patch versions of actions/cache,
43
+ actions/checkout, etc. The CodeQL deprecation applies to entire major versions v1 and v2
44
+ and produces a specific, different error message.
45
+ fix: |
46
+ Replace every `github/codeql-action/*@v2` (and `@v1`) reference in all workflow files
47
+ with the corresponding `@v3` tag. All steps in the CodeQL workflow must be updated
48
+ together — a partial update (e.g., `init@v3` but `analyze@v2`) will still fail.
49
+
50
+ After updating, verify the workflow runs successfully by checking the Actions tab
51
+ and the Security → Code Scanning alerts page.
52
+ fix_code:
53
+ - language: yaml
54
+ label: "Updated CodeQL workflow using v3 (all steps)"
55
+ code: |
56
+ name: "CodeQL Analysis"
57
+ on:
58
+ push:
59
+ branches: ["main"]
60
+ pull_request:
61
+ branches: ["main"]
62
+ schedule:
63
+ - cron: '0 6 * * 1'
64
+
65
+ jobs:
66
+ analyze:
67
+ name: Analyze (${{ matrix.language }})
68
+ runs-on: ubuntu-latest
69
+ permissions:
70
+ actions: read
71
+ contents: read
72
+ security-events: write
73
+
74
+ strategy:
75
+ matrix:
76
+ language: ['javascript', 'python']
77
+
78
+ steps:
79
+ - name: Checkout repository
80
+ uses: actions/checkout@v4
81
+
82
+ - name: Initialize CodeQL
83
+ uses: github/codeql-action/init@v3 # ← was @v2
84
+ with:
85
+ languages: ${{ matrix.language }}
86
+
87
+ - name: Autobuild
88
+ uses: github/codeql-action/autobuild@v3 # ← was @v2
89
+
90
+ - name: Perform CodeQL Analysis
91
+ uses: github/codeql-action/analyze@v3 # ← was @v2
92
+ with:
93
+ category: "/language:${{ matrix.language }}"
94
+ - language: yaml
95
+ label: "Bulk-find stale v2 references (shell one-liner)"
96
+ code: |
97
+ # Run from repo root to find all @v1 or @v2 codeql-action references:
98
+ # grep -rn "codeql-action/.*@v[12]" .github/workflows/
99
+ prevention:
100
+ - "Use Dependabot for GitHub Actions to automatically open PRs when actions release new major versions."
101
+ - "Enable the 'Actions' section in Dependabot config (`package-ecosystem: github-actions`) for all repos with CodeQL workflows."
102
+ - "After any CodeQL major version update, verify Security → Code Scanning shows recent scans with no 'Tool not recognized' errors."
103
+ - "Search all workflow files for `codeql-action` references before major GitHub deprecation windows."
104
+ docs:
105
+ - url: "https://github.blog/changelog/2025-01-10-code-scanning-codeql-action-v2-is-now-deprecated/"
106
+ label: "GitHub Changelog: Code scanning — CodeQL Action v2 is now deprecated (Jan 2025)"
107
+ - url: "https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages"
108
+ label: "GitHub Docs: CodeQL code scanning for compiled languages"
109
+ - url: "https://github.com/github/codeql-action/releases"
110
+ label: "github/codeql-action Releases — v3 changelog"
@@ -0,0 +1,114 @@
1
+ id: runner-environment-070
2
+ title: "macOS 26 Upgrades OpenSSL from 1.1.1 to 3.x — Hardcoded openssl@1.1 Paths Break"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - openssl
8
+ - macos-26
9
+ - runner-image
10
+ - breaking-change
11
+ - homebrew
12
+ patterns:
13
+ - regex: "Library not loaded.*openssl@1\\.1.*libssl\\.1\\.1\\.dylib"
14
+ flags: "i"
15
+ - regex: "ld.*library not found.*-lssl|cannot find.*libssl\\.1\\.1"
16
+ flags: "i"
17
+ - regex: "openssl@1\\.1.*not installed|brew.*openssl@1\\.1.*no longer"
18
+ flags: "i"
19
+ - regex: "Could not find OpenSSL|ssl.*version.*mismatch.*1\\.1"
20
+ flags: "i"
21
+ - regex: "OpenSSL 1\\.1\\.1.*required.*OpenSSL 3"
22
+ flags: "i"
23
+ error_messages:
24
+ - "Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib"
25
+ - "Library not loaded: /opt/homebrew/opt/openssl@1.1/lib/libssl.1.1.dylib"
26
+ - "ld: library not found for -lssl (referenced from build target)"
27
+ - "Could not find a package configuration file provided by 'OpenSSL'"
28
+ - "Could not link to OpenSSL library. Please install OpenSSL."
29
+ root_cause: |
30
+ When macos-latest migrates to macos-26 (rolling out June 15 through July 15, 2026),
31
+ the system OpenSSL jumps from OpenSSL 1.1.1w (the last 1.x release, now EOL)
32
+ to OpenSSL 3.6.2. This is a major version change with breaking ABI differences.
33
+
34
+ Any workflow that hardcodes openssl@1.1 Homebrew paths or links against the
35
+ 1.1.x shared libraries will fail because:
36
+
37
+ - Homebrew's openssl@1.1 formula is deprecated on macOS 26
38
+ - The shared library /opt/homebrew/opt/openssl@1.1/lib/libssl.1.1.dylib
39
+ no longer exists; it is replaced by openssl@3
40
+ - PKG_CONFIG_PATH and LDFLAGS pointing to openssl@1.1 resolve to nothing
41
+
42
+ Common breakage surfaces:
43
+ - Ruby gems with native extensions (openssl gem links against system OpenSSL)
44
+ - Python packages (pyOpenSSL, cryptography) that link against 1.x path
45
+ - CMake projects using find_package(OpenSSL) finding incompatible version
46
+ - Homebrew formulas linking transitively against openssl@1.1
47
+
48
+ Source: runner-images#14167 — macOS 15 vs macOS 26 software diff shows
49
+ OpenSSL jumps from 1.1.1w to 3.6.2.
50
+ fix: |
51
+ Replace all openssl@1.1 references with openssl@3 (installed by default on macOS 26).
52
+
53
+ For Homebrew-based builds, use dynamic path detection:
54
+ OPENSSL_DIR=$(brew --prefix openssl@3)
55
+ export LDFLAGS="-L${OPENSSL_DIR}/lib"
56
+ export PKG_CONFIG_PATH="${OPENSSL_DIR}/lib/pkgconfig"
57
+
58
+ For Ruby gem compilation:
59
+ bundle config build.openssl --with-openssl-dir=$(brew --prefix openssl@3)
60
+
61
+ For CMake, pass OPENSSL_ROOT_DIR:
62
+ cmake -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3) ..
63
+ fix_code:
64
+ - language: yaml
65
+ label: "Dynamic OpenSSL path — works on both macOS 15 and macOS 26"
66
+ code: |
67
+ jobs:
68
+ build:
69
+ runs-on: macos-latest
70
+ steps:
71
+ - uses: actions/checkout@v4
72
+
73
+ - name: Set OpenSSL environment variables
74
+ run: |
75
+ OPENSSL_PREFIX=$(brew --prefix openssl)
76
+ echo "OPENSSL_DIR=$OPENSSL_PREFIX" >> $GITHUB_ENV
77
+ echo "LDFLAGS=-L$OPENSSL_PREFIX/lib" >> $GITHUB_ENV
78
+ echo "CPPFLAGS=-I$OPENSSL_PREFIX/include" >> $GITHUB_ENV
79
+ echo "PKG_CONFIG_PATH=$OPENSSL_PREFIX/lib/pkgconfig" >> $GITHUB_ENV
80
+
81
+ - name: Build project
82
+ run: cmake -B build -DOPENSSL_ROOT_DIR=$OPENSSL_DIR && cmake --build build
83
+ - language: yaml
84
+ label: "Ruby bundler — configure openssl@3 for native extension builds"
85
+ code: |
86
+ jobs:
87
+ ruby-build:
88
+ runs-on: macos-latest
89
+ steps:
90
+ - uses: actions/checkout@v4
91
+ - uses: ruby/setup-ruby@v1
92
+ with:
93
+ ruby-version: '3.4'
94
+ bundler-cache: true
95
+
96
+ - name: Configure OpenSSL for bundler
97
+ run: |
98
+ OPENSSL_DIR=$(brew --prefix openssl@3)
99
+ bundle config build.openssl --with-openssl-dir=$OPENSSL_DIR
100
+
101
+ - name: Install gems
102
+ run: bundle install
103
+ prevention:
104
+ - "Never hardcode openssl@1.1 paths — always use $(brew --prefix openssl) dynamically."
105
+ - "Test your macOS workflows on macos-26 before macos-latest migrates (June 15 to July 15, 2026)."
106
+ - "Use macos-15 label to pin to the older image while migrating OpenSSL dependencies."
107
+ - "For language setup actions, ensure you use recent versions that handle OpenSSL 3 automatically."
108
+ docs:
109
+ - url: "https://github.com/actions/runner-images/issues/14167"
110
+ label: "GitHub Announcement: macos-latest will use macos-26 in June 2026 (includes OpenSSL diff)"
111
+ - url: "https://www.openssl.org/news/changelog.html"
112
+ label: "OpenSSL 3.x Changelog"
113
+ - url: "https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners"
114
+ label: "About GitHub-hosted runners"
@@ -0,0 +1,114 @@
1
+ id: runner-environment-072
2
+ title: "macOS 26 Upgrades Default Ruby from 3.3 to 3.4 — Native Gem ABI Breaks"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - ruby
8
+ - macos-26
9
+ - runner-image
10
+ - breaking-change
11
+ - native-extensions
12
+ patterns:
13
+ - regex: 'incompatible library version.*\.bundle|LoadError.*incompatible library'
14
+ flags: "i"
15
+ - regex: 'ruby.*3\.3.*required.*3\.4|Gem.*compiled.*Ruby 3\.3.*running.*3\.4'
16
+ flags: "i"
17
+ - regex: "Bundler.*RUBY_VERSION.*mismatch|native extension.*wrong Ruby version"
18
+ flags: "i"
19
+ - regex: 'Error loading.*\.bundle.*built for Ruby 3\.3'
20
+ flags: "i"
21
+ error_messages:
22
+ - "LoadError: incompatible library version - /path/to/gem.bundle (expected 3.3, got 3.4)"
23
+ - "Bundler::GemNotFound: Could not find gem 'pg (>= 0) ruby' in locally installed gems"
24
+ - "An error occurred while installing nokogiri, and Bundler cannot continue."
25
+ - "Your Ruby version is 3.4.x, but your Gemfile specified 3.3.x"
26
+ root_cause: |
27
+ When macos-latest migrates to macos-26 (June 15 through July 15, 2026), the default
28
+ system Ruby version jumps from 3.3.11 to 3.4.9. This is a minor Ruby version change
29
+ but it breaks any workflow that:
30
+
31
+ 1. Has a Gemfile or .ruby-version pinning Ruby 3.3.x
32
+ 2. Uses cached gem bundles built against Ruby 3.3's C ABI (native extensions
33
+ like nokogiri, pg, mysql2, ffi compile to .bundle files tied to the Ruby ABI)
34
+ 3. Hardcodes RUBY_VERSION in build scripts or Gemfile.lock references
35
+
36
+ Ruby native extensions (.bundle files) are ABI-specific — gems compiled against
37
+ Ruby 3.3 cannot be loaded by Ruby 3.4 and vice versa. If a workflow caches
38
+ bundled gems from a prior run on macos-15 (Ruby 3.3) and restores them on
39
+ macos-26 (Ruby 3.4), native extension gems will fail to load.
40
+
41
+ Source: runner-images#14167 — macOS 15 vs macOS 26 software diff shows Ruby
42
+ jumping from 3.3.11 to 3.4.9.
43
+ fix: |
44
+ Option 1 — Use ruby/setup-ruby to pin an explicit Ruby version (recommended):
45
+ - uses: ruby/setup-ruby@v1
46
+ with:
47
+ ruby-version: '3.3' # or '3.4' to target the new default
48
+ bundler-cache: true
49
+
50
+ Option 2 — Add .ruby-version file to your repo specifying the target Ruby version.
51
+ setup-ruby will read this automatically.
52
+
53
+ Option 3 — Update your Gemfile to remove Ruby version constraint or bump it to 3.4:
54
+ # In Gemfile, remove or update:
55
+ # ruby '3.3' <- remove or change to '3.4'
56
+
57
+ For cache invalidation: if you use actions/cache for bundler, include the Ruby
58
+ version in the cache key:
59
+ key: gems-${{ runner.os }}-ruby-${{ env.RUBY_VERSION }}-${{ hashFiles('**/Gemfile.lock') }}
60
+ fix_code:
61
+ - language: yaml
62
+ label: "Pin Ruby version with setup-ruby (cross-image safe)"
63
+ code: |
64
+ jobs:
65
+ test:
66
+ runs-on: macos-latest
67
+ steps:
68
+ - uses: actions/checkout@v4
69
+
70
+ - uses: ruby/setup-ruby@v1
71
+ with:
72
+ # Pin explicitly — do not rely on runner default Ruby
73
+ ruby-version: '3.4'
74
+ bundler-cache: true
75
+
76
+ - name: Run tests
77
+ run: bundle exec rspec
78
+
79
+ - language: yaml
80
+ label: "Cache key including Ruby version to avoid ABI mismatch"
81
+ code: |
82
+ jobs:
83
+ test:
84
+ runs-on: macos-latest
85
+ steps:
86
+ - uses: actions/checkout@v4
87
+
88
+ - uses: ruby/setup-ruby@v1
89
+ with:
90
+ ruby-version: '3.4'
91
+
92
+ - name: Cache bundler gems
93
+ uses: actions/cache@v4
94
+ with:
95
+ path: vendor/bundle
96
+ # Include Ruby version in cache key to prevent ABI mismatch
97
+ key: gems-${{ runner.os }}-ruby-${{ env.RUBY_VERSION }}-${{ hashFiles('**/Gemfile.lock') }}
98
+ restore-keys: |
99
+ gems-${{ runner.os }}-ruby-${{ env.RUBY_VERSION }}-
100
+
101
+ - name: Install gems
102
+ run: bundle install --path vendor/bundle
103
+ prevention:
104
+ - "Always use ruby/setup-ruby with an explicit ruby-version — never rely on the runner's default Ruby."
105
+ - "Include the Ruby version in bundler cache keys to prevent loading native gems built for a different Ruby ABI."
106
+ - "Add a .ruby-version file to your repository to make the intended Ruby version visible and enforceable."
107
+ - "Test on macos-26 before macos-latest migrates to catch Ruby 3.3 to 3.4 incompatibilities early."
108
+ docs:
109
+ - url: "https://github.com/actions/runner-images/issues/14167"
110
+ label: "GitHub Announcement: macos-latest will use macos-26 in June 2026 (includes Ruby version diff)"
111
+ - url: "https://github.com/ruby/setup-ruby"
112
+ label: "ruby/setup-ruby action"
113
+ - url: "https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/"
114
+ label: "Ruby 3.4.0 Release Notes"
@@ -0,0 +1,99 @@
1
+ id: runner-environment-071
2
+ title: "macOS 26 Default Xcode Switches to 26.5 on June 8 2026 — Unpin to Fix"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - xcode
8
+ - macos-26
9
+ - runner-image
10
+ - breaking-change
11
+ - ios
12
+ patterns:
13
+ - regex: 'Xcode.*26\.4\.1.*not found|xcode.*version.*26\.4.*unavailable'
14
+ flags: "i"
15
+ - regex: 'your project.*not compatible.*Xcode 26\.5|requires Xcode.*26\.4'
16
+ flags: "i"
17
+ - regex: 'xcodebuild.*error.*incompatible.*project|DT_TOOLCHAIN.*not found.*26\.5'
18
+ flags: "i"
19
+ - regex: 'error.*The iOS Simulator.*26\.1.*required.*26\.5'
20
+ flags: "i"
21
+ error_messages:
22
+ - "xcodebuild: error: The project requires Xcode 26.4.1, but the currently selected Xcode version is 26.5."
23
+ - "error: DT_TOOLCHAIN_DIR cannot be used to evaluate TOOLCHAIN_DIR. Use TOOLCHAINS setting instead."
24
+ - "Unable to boot the Simulator. The request to boot 'iOS 26.1 Simulator' was denied because the destination is incompatible with this version of Xcode."
25
+ root_cause: |
26
+ Starting June 8, 2026 (rolling out over 2-4 days), GitHub is changing the default
27
+ Xcode on macOS-26 runners from Xcode 26.4.1 to Xcode 26.5. Workflows running on
28
+ macos-26 or macos-latest (after the macos-latest migration completes) that do not
29
+ explicitly pin an Xcode version will automatically get Xcode 26.5.
30
+
31
+ Xcode 26.5 is a new major release and may introduce build incompatibilities:
32
+ - Project files referencing deprecated Xcode 26.4 APIs
33
+ - iOS/macOS Simulator runtimes that only match Xcode 26.4.1
34
+ - Swift toolchain behavior differences between 26.4.1 and 26.5
35
+ - Build setting migrations required by the new Xcode version
36
+
37
+ Source: runner-images#14172 — official GitHub announcement for macOS 26 Xcode
38
+ default change.
39
+ fix: |
40
+ Pin your Xcode version explicitly using either:
41
+
42
+ Option 1 — sudo xcode-select (no extra action required):
43
+ sudo xcode-select -s "/Applications/Xcode_26.4.1.app"
44
+
45
+ Option 2 — maxim-lobanov/setup-xcode action:
46
+ - uses: maxim-lobanov/setup-xcode@v1
47
+ with:
48
+ xcode-version: '26.4.1'
49
+
50
+ To list available Xcode versions on macos-26 runners, check the official
51
+ runner image documentation at:
52
+ https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md#xcode
53
+ fix_code:
54
+ - language: yaml
55
+ label: "Pin Xcode version using setup-xcode action"
56
+ code: |
57
+ jobs:
58
+ build-ios:
59
+ runs-on: macos-26
60
+ steps:
61
+ - uses: actions/checkout@v4
62
+
63
+ - name: Select Xcode version
64
+ uses: maxim-lobanov/setup-xcode@v1
65
+ with:
66
+ xcode-version: '26.4.1'
67
+
68
+ - name: Build iOS app
69
+ run: xcodebuild -project MyApp.xcodeproj -scheme MyApp -sdk iphonesimulator build
70
+
71
+ - language: yaml
72
+ label: "Pin Xcode version using xcode-select directly"
73
+ code: |
74
+ jobs:
75
+ build-ios:
76
+ runs-on: macos-26
77
+ steps:
78
+ - uses: actions/checkout@v4
79
+
80
+ - name: Pin Xcode 26.4.1
81
+ run: sudo xcode-select -s "/Applications/Xcode_26.4.1.app"
82
+
83
+ - name: Verify Xcode version
84
+ run: xcodebuild -version
85
+
86
+ - name: Build
87
+ run: xcodebuild -scheme MyApp build
88
+ prevention:
89
+ - "Always pin Xcode version explicitly on macOS runners — never rely on the default."
90
+ - "Use maxim-lobanov/setup-xcode@v1 with a specific xcode-version to make version changes visible in git diff."
91
+ - "Subscribe to runner-images announcements for advance notice of Xcode default version changes."
92
+ - "Audit your workflows for hardcoded Xcode version paths before macos-latest migrates to macos-26."
93
+ docs:
94
+ - url: "https://github.com/actions/runner-images/issues/14172"
95
+ label: "GitHub Announcement: Default Xcode on macOS 26 will be set to 26.5 on 2026-06-08"
96
+ - url: "https://github.com/maxim-lobanov/setup-xcode"
97
+ label: "maxim-lobanov/setup-xcode action"
98
+ - url: "https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md#xcode"
99
+ label: "macOS 26 arm64 runner image README — available Xcode versions"
@@ -0,0 +1,127 @@
1
+ id: runner-environment-064
2
+ title: "macos-latest Label Switching to macOS 26 — Toolchain and Brew Package Changes"
3
+ category: runner-environment
4
+ severity: warning
5
+ tags:
6
+ - macos
7
+ - macos-latest
8
+ - macos-26
9
+ - runner-label
10
+ - homebrew
11
+ - toolchain
12
+ - migration
13
+ patterns:
14
+ - regex: "macos.*26.*not supported"
15
+ flags: "i"
16
+ - regex: "No such file or directory.*clang|clang.*not found"
17
+ flags: "i"
18
+ - regex: "dyld.*Library not loaded"
19
+ flags: "i"
20
+ - regex: "Error: Cannot install in Homebrew on macOS.*without Command Line Tools"
21
+ flags: "i"
22
+ - regex: "macos-latest.*macos-26"
23
+ flags: "i"
24
+ error_messages:
25
+ - "clang: error: no such file or directory"
26
+ - "dyld[12345]: Library not loaded: /usr/local/lib/libssl.1.1.dylib"
27
+ - "Error: Your CLT does not support macOS 26."
28
+ - "xcrun: error: SDK 'iphoneos' cannot be located"
29
+ root_cause: |
30
+ Starting June 15, 2026, the `macos-latest` runner label is being migrated
31
+ from macOS 15 (Sequoia) to macOS 26 (runner-images#14167). The rollout
32
+ runs through July 15, 2026. Workflows pinned to `macos-latest` without
33
+ testing on macOS 26 may encounter failures from toolchain and package
34
+ differences between the two OS versions.
35
+
36
+ Key differences in macOS 26 runner images compared to macOS 15:
37
+
38
+ 1. **Homebrew LLVM version bump**: LLVM jumped from 18 to 20 on macOS 26.
39
+ Hardcoded paths like `/opt/homebrew/opt/llvm@18/bin/clang` or env vars
40
+ referencing `llvm@18` binaries fail. POCO and other libraries built
41
+ against LLVM 18 ABI may link incorrectly.
42
+
43
+ 2. **macOS SDK changes**: macOS 26 uses a newer Xcode and SDK toolchain.
44
+ Libraries and headers that existed in macOS 15 SDK may have moved,
45
+ been renamed, or removed under the macOS 26 (Tahoe) SDK.
46
+
47
+ 3. **Homebrew formula versions**: Many Homebrew packages have newer
48
+ versions on macOS 26 images than on macOS 15. Formulas with no macOS 26
49
+ bottle may be built from source, increasing job time significantly.
50
+
51
+ 4. **System library locations**: Dynamic library paths (e.g., for OpenSSL,
52
+ libpq, or other system libs installed via Homebrew) may differ between
53
+ macOS 15 and macOS 26 as Homebrew evolves its prefix structure.
54
+
55
+ 5. **Xcode simulator SDK policy**: Only the 3 latest Xcode versions retain
56
+ platform tools/SDKs. Workflows using older Xcode/simulator versions
57
+ that worked on macOS 15 may not find the expected SDK on macOS 26.
58
+
59
+ Workflows that do not pin `macos-latest` and have never tested on macOS 26
60
+ may start failing after the migration completes.
61
+ fix: |
62
+ 1. **Pin to macOS 15 temporarily**: Replace `macos-latest` with `macos-15`
63
+ to preserve the current behavior while you test and migrate.
64
+
65
+ 2. **Test on macOS 26 before migration**: Add a matrix job with
66
+ `macos-26` to identify failures before `macos-latest` switches.
67
+
68
+ 3. **Fix hardcoded LLVM/Clang paths**: Update any hardcoded paths like
69
+ `/opt/homebrew/opt/llvm@18` to use `$(brew --prefix llvm)` or install
70
+ the specific version you need via `brew install llvm@18`.
71
+
72
+ 4. **Update Homebrew formula pins**: Check for `@version`-pinned Homebrew
73
+ formulas that may no longer have macOS 26 bottles and either upgrade
74
+ or build from source explicitly.
75
+
76
+ 5. **Audit system library dependencies**: For native extensions that link
77
+ against system or Homebrew libraries, verify library paths with
78
+ `brew --prefix <lib>` at runtime rather than hardcoding them.
79
+ fix_code:
80
+ - language: yaml
81
+ label: "Pin to macos-15 while testing macOS 26 compatibility"
82
+ code: |
83
+ jobs:
84
+ build:
85
+ # Temporarily pin to macos-15 while migration is in progress
86
+ # macos-latest will point to macos-26 starting June 15, 2026
87
+ runs-on: macos-15
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ - run: make build
91
+ - language: yaml
92
+ label: "Matrix to test both macOS 15 and 26 before migration"
93
+ code: |
94
+ jobs:
95
+ build:
96
+ strategy:
97
+ matrix:
98
+ os: [macos-15, macos-26]
99
+ fail-fast: false
100
+ runs-on: ${{ matrix.os }}
101
+ steps:
102
+ - uses: actions/checkout@v4
103
+ - run: make build
104
+ - language: yaml
105
+ label: "Use brew --prefix to resolve dynamic LLVM/library paths"
106
+ code: |
107
+ - name: Set up LLVM paths dynamically
108
+ run: |
109
+ # Instead of hardcoded /opt/homebrew/opt/llvm@18/bin/clang:
110
+ LLVM_PREFIX=$(brew --prefix llvm)
111
+ echo "CC=${LLVM_PREFIX}/bin/clang" >> $GITHUB_ENV
112
+ echo "CXX=${LLVM_PREFIX}/bin/clang++" >> $GITHUB_ENV
113
+ echo "${LLVM_PREFIX}/bin" >> $GITHUB_PATH
114
+ prevention:
115
+ - "Never use macos-latest without testing the next macOS version first — GitHub announces label migrations weeks in advance in runner-images issues."
116
+ - "Pin to a specific macOS version (e.g., macos-15) for production workflows; use macos-latest only in exploratory or dependency-update workflows."
117
+ - "Avoid hardcoding Homebrew formula paths — always use `$(brew --prefix <formula>)` to resolve paths dynamically."
118
+ - "Run a matrix job spanning current and next macOS versions as part of your CI to catch breakage before a label migration lands."
119
+ docs:
120
+ - url: "https://github.com/actions/runner-images/issues/14167"
121
+ label: "runner-images #14167: macos-latest will use macos-26 starting June 15, 2026"
122
+ - url: "https://github.blog/changelog/2026-05-14-github-actions-upcoming-image-migrations/"
123
+ label: "GitHub Changelog: Upcoming image migrations (May 2026)"
124
+ - url: "https://github.com/actions/runner-images/issues/14167"
125
+ label: "runner-images announcement: macOS 14 deprecation starting July 6, 2026"
126
+ - url: "https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories"
127
+ label: "GitHub Docs: Standard GitHub-hosted runners — available runner labels"
@@ -0,0 +1,104 @@
1
+ id: runner-environment-062
2
+ title: "Node.js 20 Removed from Toolcache — Default Node.js Changed to 22"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - nodejs
7
+ - node20
8
+ - node22
9
+ - toolcache
10
+ - eol
11
+ - setup-node
12
+ - runner-images
13
+ patterns:
14
+ - regex: "node: not found"
15
+ flags: "i"
16
+ - regex: "node: No such file or directory"
17
+ flags: "i"
18
+ - regex: "Downloading Node\\.js (20\\.[0-9]+\\.[0-9]+)"
19
+ flags: "i"
20
+ - regex: "engines.*node.*>=\\s*20"
21
+ flags: "i"
22
+ - regex: "error node_modules.*requires node.*20"
23
+ flags: "i"
24
+ error_messages:
25
+ - "node: not found"
26
+ - "Downloading Node.js 20.x.x (not pre-installed, downloading on demand)"
27
+ - "error: The engine 'node' is incompatible with this module. Expected version '^20.0.0'. Got '22.x.x'"
28
+ - "The engine 'node' is incompatible with this module. Expected version '>=20 <21'. Got '22.14.0'"
29
+ root_cause: |
30
+ Node.js 20 reached end-of-life on April 30, 2026. Starting with runner image
31
+ updates rolled out May 19–26, 2026, Node.js 20 was removed from the toolcache
32
+ on ALL GitHub-hosted runner images (ubuntu-22.04, ubuntu-24.04, ubuntu-26.04,
33
+ macos-14, macos-15, macos-26, windows-2022, windows-2025, and ARM variants).
34
+
35
+ Two distinct impacts:
36
+
37
+ 1. **Default Node.js version changed**: On runners where Node.js 20 was
38
+ previously the default (e.g., ubuntu-22.04, ubuntu-24.04, windows-2022,
39
+ macos-14), the default is now Node.js 22 (Maintenance LTS). Workflows
40
+ that call `node` or `npm` without an explicit `actions/setup-node` step
41
+ will now run on Node.js 22, potentially breaking packages with strict
42
+ engines constraints like `"node": "^20.0.0"`.
43
+
44
+ 2. **setup-node now downloads Node.js 20**: If a workflow pins
45
+ `node-version: '20'` via `actions/setup-node`, it will no longer find
46
+ Node.js 20 in the toolcache and must download it on demand. This adds
47
+ download time and may fail if the registry is rate-limited or the runner
48
+ has no internet access (self-hosted runners with air-gapped environments).
49
+
50
+ Only Node.js 22 and Node.js 24 remain pre-installed in the toolcache on all
51
+ runner images after this change.
52
+ fix: |
53
+ Option 1 — Upgrade to Node.js 22 or 24 (recommended):
54
+ Update your project to support Node.js 22 (current Maintenance LTS) or
55
+ Node.js 24 (Active LTS). Update package.json engines field, run tests on
56
+ the new version, and remove the explicit node-version pin (or update it).
57
+
58
+ Option 2 — Pin to Node.js 20 via setup-node (temporary):
59
+ If you cannot migrate yet, explicitly install Node.js 20 on every job
60
+ using `actions/setup-node`. Node.js 20 is still downloadable on demand —
61
+ it just won't be pre-cached. This will slow down your workflow.
62
+
63
+ Option 3 — Test with FORCE_JAVASCRIPT_ACTIONS_TO_NODE24:
64
+ Set `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true` as a workflow env to test
65
+ how your action runtime behaves on Node.js 24 before fully migrating.
66
+ fix_code:
67
+ - language: yaml
68
+ label: "Upgrade to Node.js 22 (recommended)"
69
+ code: |
70
+ - name: Set up Node.js
71
+ uses: actions/setup-node@v4
72
+ with:
73
+ node-version: '22' # Node.js 22 is Maintenance LTS through 2026
74
+ cache: 'npm'
75
+ - language: yaml
76
+ label: "Pin Node.js 20 temporarily (still downloadable on demand)"
77
+ code: |
78
+ - name: Set up Node.js 20 (no longer pre-cached — will download)
79
+ uses: actions/setup-node@v4
80
+ with:
81
+ node-version: '20' # EOL 2026-04-30; plan your migration to v22
82
+ cache: 'npm'
83
+ - language: yaml
84
+ label: "Use .nvmrc / .node-version to pin version in project root"
85
+ code: |
86
+ - name: Set up Node.js from .nvmrc
87
+ uses: actions/setup-node@v4
88
+ with:
89
+ node-version-file: '.nvmrc' # Update .nvmrc to 22 or 24
90
+ cache: 'npm'
91
+ prevention:
92
+ - "Always specify an explicit node-version in actions/setup-node — never rely on the runner's ambient Node.js version."
93
+ - "Set `node-version-file: '.nvmrc'` and commit a .nvmrc file so all environments (local, CI, containers) use the same version."
94
+ - "Watch the runner-images Announcements tab for future EOL removals — set up GitHub notifications for the actions/runner-images repo."
95
+ - "Use `engines` in package.json with a range like `>=22 <25` to catch version incompatibilities in CI early."
96
+ docs:
97
+ - url: "https://github.com/actions/runner-images/issues/14029"
98
+ label: "runner-images #14029: Node.js 20 removed, default changed to 22"
99
+ - url: "https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/"
100
+ label: "GitHub Changelog: Deprecation of Node 20 on GitHub Actions runners"
101
+ - url: "https://github.com/nodejs/release#readme"
102
+ label: "Node.js Release Schedule (EOL dates)"
103
+ - url: "https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-installed-software#nodejs-versions"
104
+ label: "GitHub Docs: Using pre-installed software — Node.js versions"