Add Node version validation and manifest fetch retry (#1580)
Some checks failed
Basic validation / Basic validation (push) Failing after 0s
Check dist / Check dist/ (push) Failing after 0s
CodeQL analysis / CodeQL analysis (push) Failing after 0s
e2e-cache / Test npm (Node 20, ubuntu-latest) (push) Successful in 10m19s
e2e-cache / Test npm (Node 22, ubuntu-latest) (push) Successful in 10m14s
e2e-cache / Test npm (Node 24, ubuntu-latest) (push) Successful in 10m20s
e2e-cache / Test pnpm (Node 20, ubuntu-latest) (push) Failing after 2m1s
e2e-cache / Test pnpm (Node 22, ubuntu-latest) (push) Failing after 2m1s
e2e-cache / Test pnpm (Node 24, ubuntu-latest) (push) Failing after 1m59s
e2e-cache / Test yarn 1 (Node 20, ubuntu-latest) (push) Failing after 13s
e2e-cache / Test yarn 1 (Node 22, ubuntu-latest) (push) Failing after 14s
e2e-cache / Test yarn 1 (Node 24, ubuntu-latest) (push) Failing after 9s
e2e-cache / Test yarn 3 (Node 20, ubuntu-latest) (push) Failing after 8s
e2e-cache / Test yarn 3 (Node 22, ubuntu-latest) (push) Failing after 9s
e2e-cache / Test yarn 3 (Node 24, ubuntu-latest) (push) Failing after 9s
e2e-cache / Test yarn subprojects (20) (push) Failing after 9s
e2e-cache / Test yarn subprojects (22) (push) Failing after 9s
e2e-cache / Test yarn subprojects (24) (push) Failing after 9s
e2e-cache / Test yarn subprojects all locally managed (20) (push) Failing after 9s
e2e-cache / Test yarn subprojects all locally managed (22) (push) Failing after 9s
e2e-cache / Test yarn subprojects all locally managed (24) (push) Failing after 8s
e2e-cache / Test yarn subprojects some locally managed (20) (push) Failing after 9s
e2e-cache / Test yarn subprojects some locally managed (22) (push) Failing after 8s
e2e-cache / Test yarn subprojects some locally managed (24) (push) Failing after 11s
e2e-cache / Test yarn subprojects managed by git (20) (push) Failing after 9s
e2e-cache / Test yarn subprojects managed by git (22) (push) Failing after 9s
e2e-cache / Test yarn subprojects managed by git (24) (push) Failing after 9s
e2e-cache / Test auto cache with top-level packageManager (20, ubuntu-latest) (push) Successful in 9m40s
e2e-cache / Test auto cache with top-level packageManager (22, ubuntu-latest) (push) Failing after 1m38s
e2e-cache / Test auto cache with top-level packageManager (24, ubuntu-latest) (push) Successful in 9m45s
e2e-cache / Test auto cache with devEngines.packageManager (20, ubuntu-latest) (push) Failing after 1m37s
e2e-cache / Test auto cache with devEngines.packageManager (22, ubuntu-latest) (push) Failing after 17m3s
e2e-cache / Test auto cache with devEngines.packageManager (24, ubuntu-latest) (push) Successful in 9m43s
Licensed / Licensed (push) Failing after 0s
proxy / test-proxy (push) Failing after 2s
proxy / test-bypass-proxy (push) Failing after 1m14s
versions / local-cache (20, ubuntu-latest) (push) Successful in 26s
versions / local-cache (22, ubuntu-latest) (push) Successful in 26s
versions / local-cache (24, ubuntu-latest) (push) Successful in 19s
versions / lts-syntax (lts/*, ubuntu-latest) (push) Failing after 18s
versions / lts-syntax (lts/-1, ubuntu-latest) (push) Failing after 18s
versions / lts-syntax (lts/dubnium, ubuntu-latest) (push) Failing after 18s
versions / lts-syntax (lts/erbium, ubuntu-latest) (push) Failing after 16m34s
versions / lts-syntax (lts/fermium, ubuntu-latest) (push) Failing after 26m44s
versions / v8-canary-syntax (20-v8-canary, ubuntu-latest) (push) Failing after 17m4s
versions / v8-canary-syntax (20.0.0-v8-canary, ubuntu-latest) (push) Successful in 1m49s
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, ubuntu-latest) (push) Successful in 50s
versions / nightly-syntax (20-nightly, ubuntu-latest) (push) Successful in 48s
versions / nightly-syntax (24.0.0-nightly, ubuntu-latest) (push) Failing after 34s
versions / nightly-syntax (25-nightly, ubuntu-latest) (push) Failing after 32s
versions / rc-syntax (20.0.0-rc.1, ubuntu-latest) (push) Failing after 32s
versions / rc-syntax (22.14.0-rc.1, ubuntu-latest) (push) Failing after 33s
versions / rc-syntax (24.0.0-rc.4, ubuntu-latest) (push) Failing after 34s
versions / manifest (20.10.0, ubuntu-latest) (push) Failing after 33s
versions / manifest (22.0.0, ubuntu-latest) (push) Failing after 32s
versions / manifest (24.9.0, ubuntu-latest) (push) Failing after 34s
versions / check-latest (20, ubuntu-latest) (push) Failing after 33s
versions / check-latest (22, ubuntu-latest) (push) Failing after 1m44s
versions / check-latest (24, ubuntu-latest) (push) Successful in 38s
versions / version-file (.nvmrc, ubuntu-latest) (push) Failing after 33s
versions / version-file (.tool-versions, ubuntu-latest) (push) Failing after 32s
versions / version-file (.tool-versions-node, ubuntu-latest) (push) Failing after 32s
versions / version-file (package.json, ubuntu-latest) (push) Failing after 32s
versions / version-file-dev-engines (ubuntu-latest) (push) Failing after 33s
versions / version-file-volta (ubuntu-latest) (push) Failing after 34s
versions / version-file-volta-extends (ubuntu-latest) (push) Failing after 32s
versions / node-dist (21, ubuntu-latest) (push) Failing after 32s
versions / node-dist (23, ubuntu-latest) (push) Successful in 30s
versions / old-versions (ubuntu-latest) (push) Successful in 13s
versions / node-latest-aliases (current, ubuntu-latest) (push) Successful in 23s
versions / node-latest-aliases (latest, ubuntu-latest) (push) Successful in 22s
versions / node-latest-aliases (node, ubuntu-latest) (push) Successful in 22s
e2e-cache / Test npm (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 20, macos-latest-large) (push) Has been cancelled
e2e-cache / Test npm (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, macos-latest-large) (push) Has been cancelled
e2e-cache / Test npm (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 24, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 24, macos-latest-large) (push) Has been cancelled
e2e-cache / Test npm (Node 24, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, macos-latest-large) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, macos-latest-large) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 24, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 24, macos-latest-large) (push) Has been cancelled
e2e-cache / Test pnpm (Node 24, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, macos-latest-large) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 22, macos-latest-large) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 24, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 24, macos-latest-large) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 24, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, macos-latest-large) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, macos-latest-large) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 24, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 24, macos-latest-large) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 24, windows-latest) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (20, macos-latest) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (20, macos-latest-large) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (20, windows-latest) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (22, macos-latest) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (22, macos-latest-large) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (22, windows-latest) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (24, macos-latest) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (24, macos-latest-large) (push) Has been cancelled
e2e-cache / Test auto cache with top-level packageManager (24, windows-latest) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (20, macos-latest) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (20, macos-latest-large) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (20, windows-latest) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (22, macos-latest) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (22, macos-latest-large) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (22, windows-latest) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (24, macos-latest) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (24, macos-latest-large) (push) Has been cancelled
e2e-cache / Test auto cache with devEngines.packageManager (24, windows-latest) (push) Has been cancelled
versions / local-cache (20, macos-latest) (push) Has been cancelled
versions / local-cache (20, macos-latest-large) (push) Has been cancelled
versions / local-cache (20, windows-latest) (push) Has been cancelled
versions / local-cache (22, macos-latest) (push) Has been cancelled
versions / local-cache (22, macos-latest-large) (push) Has been cancelled
versions / local-cache (22, windows-latest) (push) Has been cancelled
versions / local-cache (24, macos-latest) (push) Has been cancelled
versions / local-cache (24, macos-latest-large) (push) Has been cancelled
versions / local-cache (24, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/*, macos-latest-large) (push) Has been cancelled
versions / lts-syntax (lts/*, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/-1, macos-latest-large) (push) Has been cancelled
versions / lts-syntax (lts/-1, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, macos-latest-large) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/erbium, macos-latest-large) (push) Has been cancelled
versions / lts-syntax (lts/erbium, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/fermium, macos-latest-large) (push) Has been cancelled
versions / lts-syntax (lts/fermium, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, macos-latest) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, macos-latest-large) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary, macos-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary, macos-latest-large) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, macos-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, macos-latest-large) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, windows-latest) (push) Has been cancelled
versions / nightly-syntax (20-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (20-nightly, macos-latest-large) (push) Has been cancelled
versions / nightly-syntax (20-nightly, windows-latest) (push) Has been cancelled
versions / nightly-syntax (24.0.0-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (24.0.0-nightly, macos-latest-large) (push) Has been cancelled
versions / nightly-syntax (24.0.0-nightly, windows-latest) (push) Has been cancelled
versions / nightly-syntax (25-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (25-nightly, macos-latest-large) (push) Has been cancelled
versions / nightly-syntax (25-nightly, windows-latest) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, macos-latest) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, macos-latest-large) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, windows-latest) (push) Has been cancelled
versions / rc-syntax (22.14.0-rc.1, macos-latest) (push) Has been cancelled
versions / rc-syntax (22.14.0-rc.1, macos-latest-large) (push) Has been cancelled
versions / rc-syntax (22.14.0-rc.1, windows-latest) (push) Has been cancelled
versions / rc-syntax (24.0.0-rc.4, macos-latest) (push) Has been cancelled
versions / rc-syntax (24.0.0-rc.4, macos-latest-large) (push) Has been cancelled
versions / rc-syntax (24.0.0-rc.4, windows-latest) (push) Has been cancelled
versions / manifest (20.10.0, macos-latest) (push) Has been cancelled
versions / manifest (20.10.0, macos-latest-large) (push) Has been cancelled
versions / manifest (20.10.0, windows-latest) (push) Has been cancelled
versions / manifest (22.0.0, macos-latest) (push) Has been cancelled
versions / manifest (22.0.0, macos-latest-large) (push) Has been cancelled
versions / manifest (22.0.0, windows-latest) (push) Has been cancelled
versions / manifest (24.9.0, macos-latest) (push) Has been cancelled
versions / manifest (24.9.0, macos-latest-large) (push) Has been cancelled
versions / manifest (24.9.0, windows-latest) (push) Has been cancelled
versions / check-latest (20, macos-latest) (push) Has been cancelled
versions / check-latest (20, macos-latest-large) (push) Has been cancelled
versions / check-latest (20, windows-latest) (push) Has been cancelled
versions / check-latest (22, macos-latest) (push) Has been cancelled
versions / check-latest (22, macos-latest-large) (push) Has been cancelled
versions / check-latest (22, windows-latest) (push) Has been cancelled
versions / check-latest (24, macos-latest) (push) Has been cancelled
versions / check-latest (24, macos-latest-large) (push) Has been cancelled
versions / check-latest (24, windows-latest) (push) Has been cancelled
versions / version-file (.nvmrc, macos-latest) (push) Has been cancelled
versions / version-file (.nvmrc, macos-latest-large) (push) Has been cancelled
versions / version-file (.nvmrc, windows-latest) (push) Has been cancelled
versions / version-file (.tool-versions, macos-latest) (push) Has been cancelled
versions / version-file (.tool-versions, macos-latest-large) (push) Has been cancelled
versions / version-file (.tool-versions, windows-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, macos-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, macos-latest-large) (push) Has been cancelled
versions / version-file (.tool-versions-node, windows-latest) (push) Has been cancelled
versions / version-file (package.json, macos-latest) (push) Has been cancelled
versions / version-file (package.json, macos-latest-large) (push) Has been cancelled
versions / version-file (package.json, windows-latest) (push) Has been cancelled
versions / version-file-dev-engines (macos-latest) (push) Has been cancelled
versions / version-file-dev-engines (windows-latest) (push) Has been cancelled
versions / version-file-volta (macos-latest) (push) Has been cancelled
versions / version-file-volta (macos-latest-large) (push) Has been cancelled
versions / version-file-volta (windows-latest) (push) Has been cancelled
versions / version-file-volta-extends (macos-latest) (push) Has been cancelled
versions / version-file-volta-extends (macos-latest-large) (push) Has been cancelled
versions / version-file-volta-extends (windows-latest) (push) Has been cancelled
versions / node-dist (21, macos-latest) (push) Has been cancelled
versions / node-dist (21, macos-latest-large) (push) Has been cancelled
versions / node-dist (21, windows-latest) (push) Has been cancelled
versions / node-dist (23, macos-latest) (push) Has been cancelled
versions / node-dist (23, macos-latest-large) (push) Has been cancelled
versions / node-dist (23, windows-latest) (push) Has been cancelled
versions / old-versions (macos-latest-large) (push) Has been cancelled
versions / old-versions (windows-latest) (push) Has been cancelled
versions / arch (push) Has been cancelled
versions / node-latest-aliases (current, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (current, macos-latest-large) (push) Has been cancelled
versions / node-latest-aliases (current, windows-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, macos-latest-large) (push) Has been cancelled
versions / node-latest-aliases (latest, windows-latest) (push) Has been cancelled
versions / node-latest-aliases (node, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (node, macos-latest-large) (push) Has been cancelled
versions / node-latest-aliases (node, windows-latest) (push) Has been cancelled

* Add Node version validation and manifest fetch retry

* Add debug logs for expected and actual Node versions

* chore: rebuild dist

* refactor: enhance debug logging for Node installation failure

* update test cases

* Improve formatting of test cases

* revert package-lock.json
This commit is contained in:
v-jitenderpalsingh
2026-07-15 04:25:44 +05:30
committed by GitHub
parent 8207627860
commit 363be39a57
3 changed files with 225 additions and 20 deletions

52
dist/setup/index.js vendored
View File

@@ -99439,6 +99439,7 @@ class NightlyNodejs extends BasePrereleaseNodejs {
class OfficialBuilds extends BaseDistribution {
constructor(nodeInfo) {
super(nodeInfo);
@@ -99473,7 +99474,9 @@ class OfficialBuilds extends BaseDistribution {
let toolPath = this.findVersionInHostedToolCacheDirectory();
if (toolPath) {
core_info(`Found in cache @ ${toolPath}`);
const installedDir = toolPath;
this.addToolPath(toolPath);
await this.verifyNodeVersion(installedDir);
return;
}
let downloadPath = '';
@@ -99508,10 +99511,12 @@ class OfficialBuilds extends BaseDistribution {
if (!toolPath) {
toolPath = await this.downloadDirectlyFromNode();
}
const installedDir = toolPath;
if (this.osPlat != 'win32') {
toolPath = external_path_default().join(toolPath, 'bin');
}
addPath(toolPath);
await this.verifyNodeVersion(installedDir);
}
addToolPath(toolPath) {
if (this.osPlat != 'win32') {
@@ -99553,11 +99558,30 @@ class OfficialBuilds extends BaseDistribution {
const url = mirror || 'https://nodejs.org';
return `${url}/dist`;
}
getManifest() {
core_debug('Getting manifest from actions/node-versions@main');
return getManifestFromRepo('actions', 'node-versions', this.nodeInfo.mirror && this.nodeInfo.mirrorToken
? this.nodeInfo.mirrorToken
: this.nodeInfo.auth, 'main');
async getManifest() {
let lastError;
const maxAttempts = 3;
core_debug(`Getting manifest from actions/node-versions@main`);
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
const manifest = await getManifestFromRepo('actions', 'node-versions', this.nodeInfo.mirror && this.nodeInfo.mirrorToken
? this.nodeInfo.mirrorToken
: this.nodeInfo.auth, 'main');
if (Array.isArray(manifest) && manifest.length > 0) {
return manifest;
}
lastError = new Error(`The manifest fetched is empty, truncated, or does not contain any valid tool release entries.`);
}
catch (err) {
lastError = err instanceof Error ? err : new Error(String(err));
}
core_debug(`Attempt ${attempt}/${maxAttempts} to fetch the manifest failed: ${lastError.message}`);
if (attempt < maxAttempts) {
core_info(`Retrying to fetch the manifest...`);
await new Promise(resolve => setTimeout(resolve, 1000 * 2 ** (attempt - 1))); // Retry after a delay
}
}
throw new Error(`Failed to fetch a valid manifest after ${maxAttempts} attempts. Last error: ${lastError?.message}`);
}
resolveLtsAliasFromManifest(versionSpec, stable, manifest) {
const alias = versionSpec.split('lts/')[1]?.toLowerCase();
@@ -99615,6 +99639,24 @@ class OfficialBuilds extends BaseDistribution {
isLatestSyntax(versionSpec) {
return ['current', 'latest', 'node'].includes(versionSpec);
}
async verifyNodeVersion(installedDir) {
// tool-cache layout: <root>/node/<version>/<arch>
const expectedVersion = 'v' + external_path_default().basename(external_path_default().dirname(installedDir));
let actualVersion = '';
try {
const { stdout } = await getExecOutput('node', ['--version'], {
silent: true
});
actualVersion = stdout.trim();
}
catch (err) {
throw new Error(`Node installation failed. Node may not be installed or not on PATH: ${err.message}`, { cause: err });
}
if (actualVersion !== expectedVersion) {
core_debug(`Node installation failed: expected ${expectedVersion} but "node --version" reported ${actualVersion || '(empty)'} (installedDir: ${installedDir}).`);
throw new Error(`Node ${expectedVersion} installation failed, likely due to an incomplete or corrupted download.`);
}
}
}
;// CONCATENATED MODULE: ./src/distributions/rc/rc_builds.ts