@htekdev/actions-debugger 1.0.112 → 1.0.113
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.
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
id: runner-environment-185
|
|
2
|
+
title: "Node.js 18 Removed from Toolcache After EOL — setup-node Falls Back to Slow Download or Times Out"
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- nodejs
|
|
7
|
+
- node18
|
|
8
|
+
- toolcache
|
|
9
|
+
- eol
|
|
10
|
+
- setup-node
|
|
11
|
+
- runner-images
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: "Unable to find Node version '18|Couldn't find a version that satisfied.*18"
|
|
14
|
+
flags: i
|
|
15
|
+
- regex: 'Acquiring 18\.[0-9]+\.[0-9]+ - (x64|arm64) from.*node-versions'
|
|
16
|
+
flags: i
|
|
17
|
+
- regex: 'Client network socket disconnected before secure TLS connection was established'
|
|
18
|
+
flags: i
|
|
19
|
+
- regex: 'Request timeout.*node.*18|Error.*node.*18.*download'
|
|
20
|
+
flags: i
|
|
21
|
+
error_messages:
|
|
22
|
+
- "Unable to find Node version '18' in the local cache."
|
|
23
|
+
- "Couldn't resolve the package 'node' to a version matching '18'"
|
|
24
|
+
- "Acquiring 18.20.4 - x64 from https://github.com/actions/node-versions/releases/download/18.20.4-xxxxxxxxxxxxxxxx/node-18.20.4-linux-x64.tar.gz"
|
|
25
|
+
- "Request timeout..."
|
|
26
|
+
- "Client network socket disconnected before secure TLS connection was established"
|
|
27
|
+
root_cause: |
|
|
28
|
+
Node.js 18 reached end-of-life on **April 30, 2025**. GitHub subsequently removed it from the
|
|
29
|
+
pre-installed toolcache on all GitHub-hosted runner images (Ubuntu, macOS, and Windows). When
|
|
30
|
+
a workflow specifies `node-version: '18'` or `node-version: '18.x'`, the `actions/setup-node`
|
|
31
|
+
action cannot find Node 18 in the local toolcache and falls back to downloading the binary from
|
|
32
|
+
GitHub's node-versions release page. This remote download frequently times out on hosted runners
|
|
33
|
+
(the GitHub Releases endpoint for old Node versions is rate-limited under load), causing the step
|
|
34
|
+
to fail part-way through setup. On self-hosted runners without unrestricted outbound internet
|
|
35
|
+
access, the fallback download fails immediately with a TLS or connection error. The failure is
|
|
36
|
+
unexpected for teams that previously never pinned a `setup-node` step because Node 18 "just
|
|
37
|
+
worked" from the toolcache — after the removal, those workflows break silently on the next
|
|
38
|
+
runner image update. Distinct from `runner-environment-029` (Node.js 20 toolcache removal)
|
|
39
|
+
and `runner-environment-062` (ubuntu-latest default changing from Node 20 to 22).
|
|
40
|
+
fix: |
|
|
41
|
+
Upgrade to a currently-supported Node.js LTS version. Node.js 22 is the current Active LTS
|
|
42
|
+
(supported until April 2027). Update the `node-version` field in your `setup-node` step and
|
|
43
|
+
verify your `package.json` `engines` field matches the new version:
|
|
44
|
+
fix_code:
|
|
45
|
+
- language: yaml
|
|
46
|
+
label: "Upgrade to Node.js 22 (Active LTS)"
|
|
47
|
+
code: |
|
|
48
|
+
- name: Set up Node.js
|
|
49
|
+
uses: actions/setup-node@v4
|
|
50
|
+
with:
|
|
51
|
+
node-version: '22'
|
|
52
|
+
cache: 'npm'
|
|
53
|
+
- language: yaml
|
|
54
|
+
label: "Pin to .nvmrc / .node-version file for consistency"
|
|
55
|
+
code: |
|
|
56
|
+
# .nvmrc or .node-version in repo root:
|
|
57
|
+
# 22
|
|
58
|
+
|
|
59
|
+
- name: Set up Node.js
|
|
60
|
+
uses: actions/setup-node@v4
|
|
61
|
+
with:
|
|
62
|
+
node-version-file: '.nvmrc'
|
|
63
|
+
cache: 'npm'
|
|
64
|
+
- language: yaml
|
|
65
|
+
label: "Matrix test across supported LTS versions"
|
|
66
|
+
code: |
|
|
67
|
+
strategy:
|
|
68
|
+
matrix:
|
|
69
|
+
node-version: ['20', '22']
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/setup-node@v4
|
|
72
|
+
with:
|
|
73
|
+
node-version: ${{ matrix.node-version }}
|
|
74
|
+
prevention:
|
|
75
|
+
- "Subscribe to Node.js EOL announcements at https://nodejs.org/en/about/previous-releases to know when to migrate"
|
|
76
|
+
- "Use `node-version-file: '.nvmrc'` so your CI and local environments stay in sync automatically"
|
|
77
|
+
- "Enable Dependabot or Renovate to auto-bump `node-version` in workflow files when LTS versions rotate"
|
|
78
|
+
- "Prefer `lts/*` for non-version-sensitive workflows to always track the current LTS without manual updates"
|
|
79
|
+
- "Avoid relying on the toolcache for EOL versions — always add an explicit `setup-node` step"
|
|
80
|
+
docs:
|
|
81
|
+
- url: "https://github.com/actions/setup-node"
|
|
82
|
+
label: "actions/setup-node"
|
|
83
|
+
- url: "https://nodejs.org/en/about/previous-releases"
|
|
84
|
+
label: "Node.js Release Schedule and EOL Dates"
|
|
85
|
+
- url: "https://github.com/actions/setup-node/issues/933"
|
|
86
|
+
label: "setup-node #933: Node 18 toolcache download timeout reports"
|
|
87
|
+
- url: "https://github.com/actions/runner-images"
|
|
88
|
+
label: "actions/runner-images — pre-installed toolcache contents"
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
id: runner-environment-186
|
|
2
|
+
title: "windows-2025 Runner Label Unexpectedly Includes VS 2026 — Pinned VS 2022 Paths Break"
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- windows
|
|
7
|
+
- windows-2025
|
|
8
|
+
- visual-studio
|
|
9
|
+
- runner-image
|
|
10
|
+
- msbuild
|
|
11
|
+
- cmake
|
|
12
|
+
- breaking-change
|
|
13
|
+
patterns:
|
|
14
|
+
- regex: 'Cannot find path.*Visual Studio\\2022.*because it does not exist'
|
|
15
|
+
flags: i
|
|
16
|
+
- regex: 'Visual Studio 2022.*not found|MSBuild.*17\.[0-9]+.*not available'
|
|
17
|
+
flags: i
|
|
18
|
+
- regex: 'CMake.*generator.*Visual Studio 17 2022.*not available'
|
|
19
|
+
flags: i
|
|
20
|
+
- regex: 'vswhere.*version.*\[17,18\).*returned empty|No valid VS instances found'
|
|
21
|
+
flags: i
|
|
22
|
+
- regex: 'MSB4019.*Microsoft\.CppBuild\.targets.*was not found'
|
|
23
|
+
flags: i
|
|
24
|
+
error_messages:
|
|
25
|
+
- "Cannot find path 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Microsoft\\VC' because it does not exist."
|
|
26
|
+
- "MSB4019: The imported project 'Microsoft.CppBuild.targets' was not found. Confirm that the expression in the Import declaration is correct."
|
|
27
|
+
- "CMake Error: CMake was unable to find a build program corresponding to \"Visual Studio 17 2022\"."
|
|
28
|
+
- "The C++ toolchain version 14.30 targeting platform 'x64' is not installed. Install it from the VS Installer."
|
|
29
|
+
root_cause: |
|
|
30
|
+
In early 2026, some builds of the `windows-2025` runner image label began shipping with
|
|
31
|
+
Visual Studio 2026 (Public Preview) as the primary Visual Studio installation, removing or
|
|
32
|
+
demoting VS 2022 components that had been present in earlier `windows-2025` builds. Developers
|
|
33
|
+
who had explicitly pinned `runs-on: windows-2025` (rather than `windows-latest`) to preserve
|
|
34
|
+
VS 2022 compatibility found their workflows unexpectedly broken, because hardcoded paths to
|
|
35
|
+
`C:\Program Files\Microsoft Visual Studio\2022\...` no longer existed, and CMake generators
|
|
36
|
+
targeting "Visual Studio 17 2022" could not locate a matching installation.
|
|
37
|
+
|
|
38
|
+
This is distinct from the intentional `windows-latest` → VS 2026 migration documented in
|
|
39
|
+
`runner-environment-020`. In that case, developers pinned to a versioned label specifically
|
|
40
|
+
to avoid the change — the versioned label was supposed to be stable. The regression occurred
|
|
41
|
+
because `windows-2025` image builds that included VS 2026 were briefly pushed to the label's
|
|
42
|
+
rotation before being identified and rolled back.
|
|
43
|
+
|
|
44
|
+
Source: actions/runner-images#13638, actions/runner-images#14004.
|
|
45
|
+
fix: |
|
|
46
|
+
Pin to `windows-2022` to guarantee a VS 2022 toolchain for the foreseeable future. Use
|
|
47
|
+
`vswhere.exe` to discover Visual Studio components at runtime rather than hardcoding
|
|
48
|
+
installation paths, which protects against future image changes on any Windows label.
|
|
49
|
+
fix_code:
|
|
50
|
+
- language: yaml
|
|
51
|
+
label: "Pin to windows-2022 for guaranteed VS 2022"
|
|
52
|
+
code: |
|
|
53
|
+
jobs:
|
|
54
|
+
build:
|
|
55
|
+
# Use windows-2022 instead of windows-2025 to guarantee VS 2022 toolchain
|
|
56
|
+
runs-on: windows-2022
|
|
57
|
+
- language: yaml
|
|
58
|
+
label: "Use vswhere to discover MSBuild path at runtime"
|
|
59
|
+
code: |
|
|
60
|
+
- name: Locate MSBuild via vswhere
|
|
61
|
+
id: msbuild
|
|
62
|
+
shell: pwsh
|
|
63
|
+
run: |
|
|
64
|
+
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
|
65
|
+
$msbuild = & $vswhere -latest -requires Microsoft.Component.MSBuild `
|
|
66
|
+
-find MSBuild\**\Bin\MSBuild.exe | Select-Object -First 1
|
|
67
|
+
if (-not $msbuild) { throw "MSBuild not found via vswhere" }
|
|
68
|
+
"path=$msbuild" | Out-File -Append $env:GITHUB_OUTPUT
|
|
69
|
+
|
|
70
|
+
- name: Build solution
|
|
71
|
+
shell: pwsh
|
|
72
|
+
run: |
|
|
73
|
+
& "${{ steps.msbuild.outputs.path }}" MySolution.sln /p:Configuration=Release /p:Platform=x64
|
|
74
|
+
- language: yaml
|
|
75
|
+
label: "Use CMake with dynamic VS version detection"
|
|
76
|
+
code: |
|
|
77
|
+
- name: Configure CMake
|
|
78
|
+
run: |
|
|
79
|
+
# Let CMake auto-detect the installed VS version instead of pinning generator
|
|
80
|
+
cmake -B build -DCMAKE_BUILD_TYPE=Release
|
|
81
|
+
# Avoid: cmake -G "Visual Studio 17 2022" which fails if VS 2022 is absent
|
|
82
|
+
prevention:
|
|
83
|
+
- "Use `vswhere.exe` to locate Visual Studio and MSBuild components at runtime — never hardcode installation paths"
|
|
84
|
+
- "Subscribe to the actions/runner-images releases feed to get notified when versioned labels are updated"
|
|
85
|
+
- "Avoid CMake `-G \"Visual Studio 17 2022\"` in favor of `cmake -B build` with auto-detection when possible"
|
|
86
|
+
- "For CUDA or other toolchain integrations that require a specific VS version, test on a matrix of runner labels to catch regressions early"
|
|
87
|
+
docs:
|
|
88
|
+
- url: "https://github.com/actions/runner-images/issues/13638"
|
|
89
|
+
label: "runner-images #13638: windows-2025 label includes VS2026 regression report"
|
|
90
|
+
- url: "https://github.com/actions/runner-images/issues/14004"
|
|
91
|
+
label: "runner-images #14004: VS 2022 paths missing on windows-2025"
|
|
92
|
+
- url: "https://github.com/microsoft/vswhere"
|
|
93
|
+
label: "vswhere — Visual Studio locator (Microsoft)"
|
|
94
|
+
- url: "https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md"
|
|
95
|
+
label: "Windows Server 2025 Runner Image Readme"
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
id: runner-environment-187
|
|
2
|
+
title: "ubuntu-24.04 Runner Missing software-properties-common — add-apt-repository Not Found"
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- ubuntu
|
|
7
|
+
- ubuntu-24.04
|
|
8
|
+
- apt
|
|
9
|
+
- ppa
|
|
10
|
+
- runner-image
|
|
11
|
+
- breaking-change
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'add-apt-repository.*not found|command not found.*add-apt-repository'
|
|
14
|
+
flags: i
|
|
15
|
+
- regex: '/bin/(sh|bash).*add-apt-repository.*not found'
|
|
16
|
+
flags: i
|
|
17
|
+
- regex: 'Unable to locate executable file: add-apt-repository'
|
|
18
|
+
flags: i
|
|
19
|
+
- regex: 'No such file or directory.*add-apt-repository'
|
|
20
|
+
flags: i
|
|
21
|
+
error_messages:
|
|
22
|
+
- "/bin/sh: 1: add-apt-repository: not found"
|
|
23
|
+
- "bash: add-apt-repository: command not found"
|
|
24
|
+
- "Error: Unable to locate executable file: add-apt-repository"
|
|
25
|
+
- "/usr/bin/add-apt-repository: No such file or directory"
|
|
26
|
+
root_cause: |
|
|
27
|
+
The `ubuntu-24.04` GitHub-hosted runner image does not pre-install `software-properties-common`,
|
|
28
|
+
the Debian/Ubuntu package that provides the `add-apt-repository` command. On `ubuntu-22.04`
|
|
29
|
+
runners, `software-properties-common` was included by default, so workflows that used
|
|
30
|
+
`add-apt-repository` to add third-party PPAs (e.g., `ppa:deadsnakes/ppa` for older Python
|
|
31
|
+
versions, `ppa:graphics-drivers/ppa` for NVIDIA drivers) worked without any explicit install
|
|
32
|
+
step. After migrating to `ubuntu-24.04` — either explicitly or when `ubuntu-latest` switched
|
|
33
|
+
from 22.04 to 24.04 in March 2025 — these workflows fail immediately with "command not found".
|
|
34
|
+
|
|
35
|
+
The failure message points at the `add-apt-repository` line, but the actual missing dependency
|
|
36
|
+
is the `software-properties-common` package. Other apt commands in the same step (like
|
|
37
|
+
`apt-get update`) succeed, making the root cause less obvious.
|
|
38
|
+
fix: |
|
|
39
|
+
Install `software-properties-common` before calling `add-apt-repository`. For new workflows,
|
|
40
|
+
prefer adding apt source lists directly using a signing key, which does not require
|
|
41
|
+
`software-properties-common` and is more reproducible.
|
|
42
|
+
fix_code:
|
|
43
|
+
- language: yaml
|
|
44
|
+
label: "Install software-properties-common before using add-apt-repository"
|
|
45
|
+
code: |
|
|
46
|
+
- name: Add PPA and install package
|
|
47
|
+
run: |
|
|
48
|
+
sudo apt-get update
|
|
49
|
+
sudo apt-get install -y software-properties-common
|
|
50
|
+
sudo add-apt-repository -y ppa:deadsnakes/ppa
|
|
51
|
+
sudo apt-get update
|
|
52
|
+
sudo apt-get install -y python3.11 python3.11-venv
|
|
53
|
+
- language: yaml
|
|
54
|
+
label: "Preferred: add repository via source list (no software-properties-common needed)"
|
|
55
|
+
code: |
|
|
56
|
+
- name: Add repository via signed source list
|
|
57
|
+
run: |
|
|
58
|
+
# Download and install the repository GPG key
|
|
59
|
+
curl -fsSL https://example.com/gpg.key \
|
|
60
|
+
| sudo gpg --dearmor -o /usr/share/keyrings/example-archive-keyring.gpg
|
|
61
|
+
|
|
62
|
+
# Add the apt source list with the key reference
|
|
63
|
+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/example-archive-keyring.gpg] \
|
|
64
|
+
https://example.com/apt stable main" \
|
|
65
|
+
| sudo tee /etc/apt/sources.list.d/example.list > /dev/null
|
|
66
|
+
|
|
67
|
+
sudo apt-get update
|
|
68
|
+
sudo apt-get install -y example-package
|
|
69
|
+
- language: yaml
|
|
70
|
+
label: "Conditionally install software-properties-common (ubuntu-24.04 only)"
|
|
71
|
+
code: |
|
|
72
|
+
- name: Install apt prerequisites
|
|
73
|
+
run: |
|
|
74
|
+
# software-properties-common is not pre-installed on ubuntu-24.04
|
|
75
|
+
sudo apt-get install -y software-properties-common
|
|
76
|
+
prevention:
|
|
77
|
+
- "Do not rely on `software-properties-common` being pre-installed — always add it as an explicit apt-get install step"
|
|
78
|
+
- "Prefer direct apt source list additions (with GPG key dearmoring) over PPAs for better reproducibility on ubuntu-24.04"
|
|
79
|
+
- "Verify pre-installed packages when migrating runner labels — check https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md"
|
|
80
|
+
- "Test workflows explicitly on ubuntu-24.04 before relying on ubuntu-latest defaulting to 24.04"
|
|
81
|
+
- "Use `apt-get install -y --no-install-recommends` to keep explicit and minimal dependencies"
|
|
82
|
+
docs:
|
|
83
|
+
- url: "https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md"
|
|
84
|
+
label: "Ubuntu 24.04 Runner Image Readme — pre-installed packages list"
|
|
85
|
+
- url: "https://github.com/actions/runner-images/issues/9848"
|
|
86
|
+
label: "runner-images #9848: ubuntu-latest migration to ubuntu-24.04 tracking issue"
|
|
87
|
+
- url: "https://manpages.ubuntu.com/manpages/noble/man1/add-apt-repository.1.html"
|
|
88
|
+
label: "add-apt-repository man page (Ubuntu Noble)"
|
|
89
|
+
- url: "https://help.launchpad.net/Packaging/PPA/InstallingSoftware"
|
|
90
|
+
label: "Launchpad PPA Installation Guide"
|
package/package.json
CHANGED