@htekdev/actions-debugger 1.0.71 → 1.0.72
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.
- package/errors/runner-environment/arm64-runner-binary-exec-format-error.yml +100 -0
- package/errors/runner-environment/ubuntu-24-no-swap-oom-exit-137.yml +124 -0
- package/errors/runner-environment/ubuntu-24-openjdk11-no-installation-candidate.yml +99 -0
- package/errors/runner-environment/windows-2025-dotnet6-sdk-removed.yml +96 -0
- package/package.json +1 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
id: runner-environment-133
|
|
2
|
+
title: 'ARM64 runners: downloaded x86_64 binary fails with "Exec format error" — wrong architecture'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- arm64
|
|
7
|
+
- aarch64
|
|
8
|
+
- binary
|
|
9
|
+
- exec-format-error
|
|
10
|
+
- ubuntu-arm
|
|
11
|
+
- architecture
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'cannot execute binary file: Exec format error'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'Exec format error'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
- regex: 'exec.*format error'
|
|
18
|
+
flags: 'i'
|
|
19
|
+
error_messages:
|
|
20
|
+
- './my-tool: cannot execute binary file: Exec format error'
|
|
21
|
+
- '/usr/local/bin/kubectl: cannot execute binary file: Exec format error'
|
|
22
|
+
- 'bash: ./tool: cannot execute binary file: Exec format error'
|
|
23
|
+
root_cause: |
|
|
24
|
+
GitHub-hosted ubuntu-24.04-arm and ubuntu-22.04-arm runners use ARM64 (aarch64) CPUs.
|
|
25
|
+
The RUNNER_ARCH environment variable returns ARM64 on these runners, not X64.
|
|
26
|
+
|
|
27
|
+
Workflows that download pre-built binaries using hardcoded architecture suffixes like
|
|
28
|
+
linux-amd64, linux-x86_64, or linux-x64 download x86_64 binaries that cannot execute on
|
|
29
|
+
ARM64 hardware. The Linux kernel rejects the binary with "Exec format error" (ENOEXEC)
|
|
30
|
+
because the ELF architecture header in the binary does not match the host CPU.
|
|
31
|
+
|
|
32
|
+
Common patterns that break:
|
|
33
|
+
- Hardcoded URL: https://example.com/tool-linux-amd64.tar.gz
|
|
34
|
+
- Shell variable set once: ARCH="amd64" without checking RUNNER_ARCH
|
|
35
|
+
- Workflow matrix that includes ubuntu-24.04-arm without updating download URLs
|
|
36
|
+
- Third-party scripts that assume x86_64 without ARM64 support
|
|
37
|
+
|
|
38
|
+
This is a silent-ish failure — the binary downloads successfully (HTTP 200), extracts
|
|
39
|
+
without error, but fails only when executed.
|
|
40
|
+
fix: |
|
|
41
|
+
Use the RUNNER_ARCH environment variable or uname -m to detect architecture and select
|
|
42
|
+
the correct binary:
|
|
43
|
+
|
|
44
|
+
- RUNNER_ARCH is X64 on x86_64 runners, ARM64 on ARM64 runners
|
|
45
|
+
- uname -m returns x86_64 on x86_64, aarch64 on ARM64
|
|
46
|
+
|
|
47
|
+
Normalize to the convention used by the tool's release naming (amd64/arm64 or x86_64/aarch64).
|
|
48
|
+
Where possible, prefer using setup-* actions that handle multi-architecture automatically.
|
|
49
|
+
fix_code:
|
|
50
|
+
- language: yaml
|
|
51
|
+
label: 'Detect architecture and download correct binary'
|
|
52
|
+
code: |
|
|
53
|
+
jobs:
|
|
54
|
+
install-tool:
|
|
55
|
+
runs-on: ${{ matrix.runner }}
|
|
56
|
+
strategy:
|
|
57
|
+
matrix:
|
|
58
|
+
runner: [ubuntu-24.04, ubuntu-24.04-arm]
|
|
59
|
+
steps:
|
|
60
|
+
- name: Detect architecture and download tool
|
|
61
|
+
run: |
|
|
62
|
+
ARCH=$(uname -m)
|
|
63
|
+
case "$ARCH" in
|
|
64
|
+
x86_64) DL_ARCH="amd64" ;;
|
|
65
|
+
aarch64) DL_ARCH="arm64" ;;
|
|
66
|
+
*) echo "Unsupported arch: $ARCH"; exit 1 ;;
|
|
67
|
+
esac
|
|
68
|
+
curl -sSL "https://example.com/tool-linux-${DL_ARCH}.tar.gz" | tar xz
|
|
69
|
+
sudo mv tool /usr/local/bin/
|
|
70
|
+
|
|
71
|
+
- language: yaml
|
|
72
|
+
label: 'Use RUNNER_ARCH environment variable (GitHub-native)'
|
|
73
|
+
code: |
|
|
74
|
+
jobs:
|
|
75
|
+
install-tool:
|
|
76
|
+
runs-on: ubuntu-24.04-arm
|
|
77
|
+
steps:
|
|
78
|
+
- name: Install tool using RUNNER_ARCH
|
|
79
|
+
run: |
|
|
80
|
+
# RUNNER_ARCH is X64 or ARM64 (uppercase)
|
|
81
|
+
if [ "$RUNNER_ARCH" = "ARM64" ]; then
|
|
82
|
+
DL_ARCH="arm64"
|
|
83
|
+
else
|
|
84
|
+
DL_ARCH="amd64"
|
|
85
|
+
fi
|
|
86
|
+
curl -sSL "https://releases.example.com/tool-linux-${DL_ARCH}" -o /usr/local/bin/tool
|
|
87
|
+
chmod +x /usr/local/bin/tool
|
|
88
|
+
prevention:
|
|
89
|
+
- 'Never hardcode linux-amd64 or linux-x86_64 in binary download URLs — always parameterize by architecture'
|
|
90
|
+
- 'Prefer setup-* GitHub Actions (setup-node, setup-go, setup-java) over manual binary downloads — they handle ARM64 automatically'
|
|
91
|
+
- 'Add ubuntu-24.04-arm to your test matrix to catch architecture issues before they affect users'
|
|
92
|
+
- 'Check tool release pages for ARM64 availability before migrating to ARM64 runners — not all tools provide arm64 builds'
|
|
93
|
+
- 'Use RUNNER_ARCH (GitHub variable) or uname -m (portable) to detect architecture in shell scripts'
|
|
94
|
+
docs:
|
|
95
|
+
- url: 'https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources'
|
|
96
|
+
label: 'GitHub-hosted runners — supported runner types including ARM64'
|
|
97
|
+
- url: 'https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#default-environment-variables'
|
|
98
|
+
label: 'Default environment variables — RUNNER_ARCH values'
|
|
99
|
+
- url: 'https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-ARM64-Readme.md'
|
|
100
|
+
label: 'ubuntu-24.04-arm runner software report'
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
id: runner-environment-135
|
|
2
|
+
title: 'ubuntu-24.04: no swap memory — memory-intensive builds killed with exit code 137 (OOM)'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- oom
|
|
7
|
+
- memory
|
|
8
|
+
- swap
|
|
9
|
+
- ubuntu-24
|
|
10
|
+
- exit-137
|
|
11
|
+
- killed
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'Error 137'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'exit code 137'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
- regex: '^Killed\s*$'
|
|
18
|
+
flags: 'm'
|
|
19
|
+
- regex: 'out of memory|OOM|oom.killer'
|
|
20
|
+
flags: 'i'
|
|
21
|
+
error_messages:
|
|
22
|
+
- 'make: *** [Makefile:42: build] Error 137'
|
|
23
|
+
- 'Killed'
|
|
24
|
+
- 'Process exited with code 137'
|
|
25
|
+
- 'error Command failed with exit code 137'
|
|
26
|
+
- 'npm ERR! code 137'
|
|
27
|
+
root_cause: |
|
|
28
|
+
GitHub-hosted ubuntu-24.04 runners provide approximately 29GB RAM but have no swap space.
|
|
29
|
+
Ubuntu 22.04 runners provided about 6GB of swap as overflow capacity. When a job exhausts
|
|
30
|
+
physical RAM, the Linux OOM killer terminates the offending process with SIGKILL (signal 9),
|
|
31
|
+
producing exit code 137 (128 + 9).
|
|
32
|
+
|
|
33
|
+
The killed process may be:
|
|
34
|
+
- Node.js during webpack/esbuild/rollup bundle generation for large frontend projects
|
|
35
|
+
- Gradle during Android AAB/APK build or large multi-module Java projects
|
|
36
|
+
- Electron Forge/Builder packaging step
|
|
37
|
+
- C/C++ linker (ld) linking large binaries with many object files
|
|
38
|
+
- Cargo (Rust) compiling with high parallelism or many dependencies
|
|
39
|
+
|
|
40
|
+
The failure is often hard to diagnose because:
|
|
41
|
+
- No explicit "Out of Memory" message appears in the workflow log
|
|
42
|
+
- The step log simply shows "Killed" and exit code 137
|
|
43
|
+
- The runner does not report memory usage in the workflow summary
|
|
44
|
+
|
|
45
|
+
If the same workflow runs on ubuntu-22.04 without issues, missing swap is the likely cause.
|
|
46
|
+
fix: |
|
|
47
|
+
Option A — Add a swap file manually before the memory-intensive step. This adds ~30 seconds
|
|
48
|
+
to job setup but provides 8GB of overflow capacity:
|
|
49
|
+
|
|
50
|
+
Option B — Reduce peak memory usage:
|
|
51
|
+
- Node.js: pass --max-old-space-size=N (MB) to node or set NODE_OPTIONS env var
|
|
52
|
+
- Gradle: reduce org.gradle.jvmargs heap in gradle.properties
|
|
53
|
+
- Cargo: set CARGO_BUILD_JOBS=2 to reduce parallel compilation
|
|
54
|
+
- webpack: use --parallel false or reduce splitChunks settings
|
|
55
|
+
|
|
56
|
+
Option C — Use a larger GitHub-hosted runner with more RAM (requires paid plan):
|
|
57
|
+
ubuntu-24.04 with 64GB RAM is available as a larger runner.
|
|
58
|
+
fix_code:
|
|
59
|
+
- language: yaml
|
|
60
|
+
label: 'Add 8GB swap file before memory-intensive build step'
|
|
61
|
+
code: |
|
|
62
|
+
jobs:
|
|
63
|
+
build:
|
|
64
|
+
runs-on: ubuntu-24.04
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
|
|
68
|
+
- name: Add swap space
|
|
69
|
+
run: |
|
|
70
|
+
sudo fallocate -l 8G /swapfile
|
|
71
|
+
sudo chmod 600 /swapfile
|
|
72
|
+
sudo mkswap /swapfile
|
|
73
|
+
sudo swapon /swapfile
|
|
74
|
+
swapon --show
|
|
75
|
+
free -h
|
|
76
|
+
|
|
77
|
+
- name: Build (memory-intensive)
|
|
78
|
+
run: npm run build
|
|
79
|
+
|
|
80
|
+
- language: yaml
|
|
81
|
+
label: 'Reduce Node.js memory usage with --max-old-space-size'
|
|
82
|
+
code: |
|
|
83
|
+
jobs:
|
|
84
|
+
build:
|
|
85
|
+
runs-on: ubuntu-24.04
|
|
86
|
+
env:
|
|
87
|
+
NODE_OPTIONS: '--max-old-space-size=6144'
|
|
88
|
+
steps:
|
|
89
|
+
- uses: actions/checkout@v4
|
|
90
|
+
- uses: actions/setup-node@v4
|
|
91
|
+
with:
|
|
92
|
+
node-version: '20'
|
|
93
|
+
- run: npm ci
|
|
94
|
+
- run: npm run build
|
|
95
|
+
|
|
96
|
+
- language: yaml
|
|
97
|
+
label: 'Reduce Gradle heap for Android/Java builds'
|
|
98
|
+
code: |
|
|
99
|
+
jobs:
|
|
100
|
+
build:
|
|
101
|
+
runs-on: ubuntu-24.04
|
|
102
|
+
steps:
|
|
103
|
+
- uses: actions/checkout@v4
|
|
104
|
+
|
|
105
|
+
- name: Set Gradle memory limits
|
|
106
|
+
run: |
|
|
107
|
+
mkdir -p ~/.gradle
|
|
108
|
+
echo 'org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m' >> ~/.gradle/gradle.properties
|
|
109
|
+
|
|
110
|
+
- name: Build APK
|
|
111
|
+
run: ./gradlew assembleRelease
|
|
112
|
+
prevention:
|
|
113
|
+
- 'Test builds on ubuntu-24.04 explicitly — do not assume ubuntu-22.04 memory behavior transfers'
|
|
114
|
+
- 'Add a swap file as a build step when migrating large builds to ubuntu-24.04'
|
|
115
|
+
- 'Set NODE_OPTIONS=--max-old-space-size as a job-level env var for Node.js heavy workflows'
|
|
116
|
+
- 'Monitor build memory usage locally: /usr/bin/time -v npm run build shows peak RSS'
|
|
117
|
+
- 'Exit code 137 with no explicit error is the canonical indicator of OOM kill — add this as a diagnostic check'
|
|
118
|
+
docs:
|
|
119
|
+
- url: 'https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources'
|
|
120
|
+
label: 'GitHub-hosted runner hardware specs — RAM and storage per runner type'
|
|
121
|
+
- url: 'https://github.com/actions/runner-images/issues'
|
|
122
|
+
label: 'runner-images issues — search "OOM" or "exit 137" for community reports'
|
|
123
|
+
- url: 'https://nodejs.org/api/cli.html#--max-old-space-sizesize-in-megabytes'
|
|
124
|
+
label: 'Node.js CLI docs — --max-old-space-size option'
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
id: runner-environment-134
|
|
2
|
+
title: 'ubuntu-24.04: openjdk-11-jdk has no installation candidate — Java 11 removed from Ubuntu 24 repos'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- java
|
|
7
|
+
- openjdk
|
|
8
|
+
- ubuntu-24
|
|
9
|
+
- apt
|
|
10
|
+
- java-11
|
|
11
|
+
- noble
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'Package .openjdk-11.*has no installation candidate'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'openjdk-11-jdk.*no installation candidate'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
- regex: 'E: Package .openjdk-11'
|
|
18
|
+
flags: 'i'
|
|
19
|
+
error_messages:
|
|
20
|
+
- 'E: Package ''openjdk-11-jdk'' has no installation candidate'
|
|
21
|
+
- 'E: Package ''openjdk-11-jre'' has no installation candidate'
|
|
22
|
+
- 'E: Unable to locate package openjdk-11-jdk'
|
|
23
|
+
root_cause: |
|
|
24
|
+
Ubuntu 24.04 LTS (Noble Numbat) dropped OpenJDK 11 from its official package repositories.
|
|
25
|
+
The minimum available Java version via apt on Ubuntu 24.04 is OpenJDK 17 (openjdk-17-jdk)
|
|
26
|
+
along with OpenJDK 21 (openjdk-21-jdk). OpenJDK 11 packages that existed in Ubuntu 22.04
|
|
27
|
+
(Jammy) are not present in Ubuntu 24.04 (Noble) main or universe repos.
|
|
28
|
+
|
|
29
|
+
Workflows that install Java via apt-get will fail:
|
|
30
|
+
sudo apt-get install -y openjdk-11-jdk # Fails on ubuntu-24.04
|
|
31
|
+
sudo apt-get install -y openjdk-11-jre # Fails on ubuntu-24.04
|
|
32
|
+
|
|
33
|
+
This affects workflows that:
|
|
34
|
+
- Directly install OpenJDK via apt without using actions/setup-java
|
|
35
|
+
- Use Docker images based on ubuntu:24.04 inside workflow steps
|
|
36
|
+
- Run scripts that call apt-get install openjdk-11* expecting Ubuntu 22 behavior
|
|
37
|
+
|
|
38
|
+
Note: Java 11 is still supported under long-term support plans but must be obtained from
|
|
39
|
+
third-party sources (Adoptium/Temurin, Amazon Corretto, Azul Zulu) rather than Ubuntu repos.
|
|
40
|
+
fix: |
|
|
41
|
+
Use actions/setup-java to install any Java version including 11. The action downloads from
|
|
42
|
+
a distribution vendor (Temurin, Corretto, Zulu, etc.) rather than Ubuntu packages, making
|
|
43
|
+
it distribution-independent and supporting Java 11 on ubuntu-24.04.
|
|
44
|
+
|
|
45
|
+
Never use apt-get to install Java on GitHub-hosted runners — always use actions/setup-java
|
|
46
|
+
which handles version discovery, caching, JAVA_HOME configuration, and multi-platform support.
|
|
47
|
+
fix_code:
|
|
48
|
+
- language: yaml
|
|
49
|
+
label: 'Use actions/setup-java to install Java 11 (works on ubuntu-24.04)'
|
|
50
|
+
code: |
|
|
51
|
+
jobs:
|
|
52
|
+
build:
|
|
53
|
+
runs-on: ubuntu-24.04
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@v4
|
|
56
|
+
|
|
57
|
+
- uses: actions/setup-java@v4
|
|
58
|
+
with:
|
|
59
|
+
java-version: '11'
|
|
60
|
+
distribution: 'temurin'
|
|
61
|
+
cache: 'maven'
|
|
62
|
+
|
|
63
|
+
- name: Build with Maven
|
|
64
|
+
run: mvn -B package --file pom.xml
|
|
65
|
+
|
|
66
|
+
- language: yaml
|
|
67
|
+
label: 'Multi-version Java matrix — test across Java 11, 17, 21'
|
|
68
|
+
code: |
|
|
69
|
+
jobs:
|
|
70
|
+
test:
|
|
71
|
+
runs-on: ubuntu-24.04
|
|
72
|
+
strategy:
|
|
73
|
+
matrix:
|
|
74
|
+
java-version: ['11', '17', '21']
|
|
75
|
+
steps:
|
|
76
|
+
- uses: actions/checkout@v4
|
|
77
|
+
|
|
78
|
+
- uses: actions/setup-java@v4
|
|
79
|
+
with:
|
|
80
|
+
java-version: ${{ matrix.java-version }}
|
|
81
|
+
distribution: 'temurin'
|
|
82
|
+
|
|
83
|
+
- name: Run tests
|
|
84
|
+
run: mvn test
|
|
85
|
+
prevention:
|
|
86
|
+
- 'Always use actions/setup-java to install Java on GitHub-hosted runners — never rely on apt-get for Java'
|
|
87
|
+
- 'Pin the Java distribution explicitly (temurin, corretto, zulu) to avoid resolution differences across Ubuntu versions'
|
|
88
|
+
- 'Test workflows on ubuntu-24.04 explicitly when migrating from ubuntu-22.04 or ubuntu-20.04'
|
|
89
|
+
- 'Check Ubuntu package availability with https://packages.ubuntu.com before relying on apt for any tool installation'
|
|
90
|
+
- 'Validate Java availability in your workflow with: java -version && javac -version as an early smoke check'
|
|
91
|
+
docs:
|
|
92
|
+
- url: 'https://github.com/actions/setup-java'
|
|
93
|
+
label: 'actions/setup-java — install Java on any GitHub-hosted runner'
|
|
94
|
+
- url: 'https://packages.ubuntu.com/noble/'
|
|
95
|
+
label: 'Ubuntu 24.04 (Noble) package search — verify available package versions'
|
|
96
|
+
- url: 'https://adoptium.net/temurin/releases/?version=11'
|
|
97
|
+
label: 'Eclipse Temurin — Java 11 LTS builds for all platforms'
|
|
98
|
+
- url: 'https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md'
|
|
99
|
+
label: 'ubuntu-24.04 runner software report — pre-installed Java versions'
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
id: runner-environment-132
|
|
2
|
+
title: 'windows-2025 runner: .NET 6 SDK removed — NETSDK1045 when targeting net6.0'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- dotnet
|
|
7
|
+
- windows-2025
|
|
8
|
+
- net6
|
|
9
|
+
- sdk
|
|
10
|
+
- netsdk1045
|
|
11
|
+
- eol
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'NETSDK1045.*\.NET 6\.0'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'does not support targeting.*\.NET 6'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
- regex: 'error NETSDK1045'
|
|
18
|
+
flags: 'i'
|
|
19
|
+
error_messages:
|
|
20
|
+
- 'error NETSDK1045: The current .NET SDK does not support targeting .NET 6.0.'
|
|
21
|
+
- 'error NETSDK1045: The current .NET SDK does not support targeting .NET 6.0. Either target .NET 8.0 or higher, or use a .NET SDK that supports .NET 6.0.'
|
|
22
|
+
root_cause: |
|
|
23
|
+
.NET 6 reached end-of-life on November 12, 2024. The windows-2025 runner image does not
|
|
24
|
+
include the .NET 6 SDK or runtime. Pre-installed .NET SDKs on windows-2025 are .NET 8
|
|
25
|
+
and .NET 9 only.
|
|
26
|
+
|
|
27
|
+
Workflows using dotnet build, dotnet test, or dotnet publish that target net6.0 TFM fail
|
|
28
|
+
with NETSDK1045 because no installed SDK can build or run .NET 6 targets. This affects:
|
|
29
|
+
- Projects with <TargetFramework>net6.0</TargetFramework> in their .csproj
|
|
30
|
+
- Multi-target projects including net6.0 in <TargetFrameworks>
|
|
31
|
+
- Workflows that run dotnet run with a net6.0 project
|
|
32
|
+
|
|
33
|
+
The windows-2022 runner still includes .NET 6 for legacy compatibility, so workflows using
|
|
34
|
+
runs-on: windows-2022 are unaffected. The breakage appears when migrating to windows-2025
|
|
35
|
+
or when windows-latest switches to windows-2025.
|
|
36
|
+
fix: |
|
|
37
|
+
Option A (recommended): Upgrade the project's TargetFramework to net8.0 or net9.0. .NET 8
|
|
38
|
+
is the current LTS release and is pre-installed on windows-2025.
|
|
39
|
+
|
|
40
|
+
Option B (legacy support): Use actions/setup-dotnet to explicitly install the .NET 6 SDK.
|
|
41
|
+
Note: .NET 6 is EOL and receives no security patches — this option is not recommended for
|
|
42
|
+
production workloads.
|
|
43
|
+
|
|
44
|
+
Option C (short-term): Pin to windows-2022 runner temporarily while upgrading.
|
|
45
|
+
fix_code:
|
|
46
|
+
- language: yaml
|
|
47
|
+
label: 'Option A — upgrade target framework to .NET 8 LTS (recommended)'
|
|
48
|
+
code: |
|
|
49
|
+
# In your .csproj, update:
|
|
50
|
+
# <TargetFramework>net8.0</TargetFramework>
|
|
51
|
+
# Then in your workflow:
|
|
52
|
+
jobs:
|
|
53
|
+
build:
|
|
54
|
+
runs-on: windows-2025
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v4
|
|
57
|
+
|
|
58
|
+
- uses: actions/setup-dotnet@v4
|
|
59
|
+
with:
|
|
60
|
+
dotnet-version: '8.0.x'
|
|
61
|
+
|
|
62
|
+
- name: Build
|
|
63
|
+
run: dotnet build --configuration Release
|
|
64
|
+
|
|
65
|
+
- language: yaml
|
|
66
|
+
label: 'Option B — explicitly install .NET 6 SDK (EOL, not recommended for production)'
|
|
67
|
+
code: |
|
|
68
|
+
jobs:
|
|
69
|
+
build:
|
|
70
|
+
runs-on: windows-2025
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v4
|
|
73
|
+
|
|
74
|
+
- uses: actions/setup-dotnet@v4
|
|
75
|
+
with:
|
|
76
|
+
dotnet-version: |
|
|
77
|
+
6.0.x
|
|
78
|
+
8.0.x
|
|
79
|
+
|
|
80
|
+
- name: Build
|
|
81
|
+
run: dotnet build --framework net6.0
|
|
82
|
+
prevention:
|
|
83
|
+
- 'Audit all TargetFramework and TargetFrameworks values before migrating to windows-2025'
|
|
84
|
+
- 'Monitor the .NET release lifecycle at https://dotnet.microsoft.com/platform/support/policy for upcoming EOL dates'
|
|
85
|
+
- 'Use Dependabot or Renovate to track .NET SDK versions referenced in global.json or setup-dotnet steps'
|
|
86
|
+
- 'Check the windows-2025 runner software report (runner-images/Windows2025-Readme.md) before migration to see pre-installed SDKs'
|
|
87
|
+
- 'Set up a CI matrix that tests both windows-2022 and windows-2025 during migration periods'
|
|
88
|
+
docs:
|
|
89
|
+
- url: 'https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md'
|
|
90
|
+
label: 'windows-2025 runner software report — pre-installed SDK versions'
|
|
91
|
+
- url: 'https://dotnet.microsoft.com/platform/support/policy/dotnet-core'
|
|
92
|
+
label: '.NET release lifecycle and EOL schedule'
|
|
93
|
+
- url: 'https://github.com/actions/setup-dotnet'
|
|
94
|
+
label: 'actions/setup-dotnet — install specific .NET SDK versions'
|
|
95
|
+
- url: 'https://github.com/actions/runner-images/discussions'
|
|
96
|
+
label: 'GitHub runner-images discussions — windows-2025 migration issues'
|
package/package.json
CHANGED