feat: support private mirrors (#1240)
Some checks failed
Basic validation / Basic validation (push) Failing after 2s
CodeQL analysis / CodeQL analysis (push) Failing after 3s
Check dist / Check dist/ (push) Failing after 4s
e2e-cache / Test pnpm (Node 20, ubuntu-latest) (push) Failing after 30s
e2e-cache / Test pnpm (Node 18, ubuntu-latest) (push) Failing after 48s
e2e-cache / Test yarn 1 (Node 18, ubuntu-latest) (push) Failing after 32s
e2e-cache / Test pnpm (Node 22, ubuntu-latest) (push) Failing after 1m7s
e2e-cache / Test yarn 1 (Node 20, ubuntu-latest) (push) Failing after 31s
e2e-cache / Test yarn 3 (Node 20, ubuntu-latest) (push) Failing after 24s
e2e-cache / Test yarn 3 (Node 18, ubuntu-latest) (push) Failing after 36s
e2e-cache / Test yarn subprojects (18) (push) Failing after 29s
e2e-cache / Test yarn 3 (Node 22, ubuntu-latest) (push) Failing after 32s
e2e-cache / Test yarn subprojects (22) (push) Failing after 29s
e2e-cache / Test yarn subprojects (20) (push) Failing after 37s
e2e-cache / Test yarn subprojects all locally managed (18) (push) Failing after 27s
e2e-cache / Test yarn subprojects all locally managed (20) (push) Failing after 36s
e2e-cache / Test yarn subprojects all locally managed (22) (push) Failing after 23s
e2e-cache / Test yarn subprojects some locally managed (20) (push) Failing after 27s
e2e-cache / Test yarn subprojects some locally managed (18) (push) Failing after 33s
e2e-cache / Test yarn subprojects some locally managed (22) (push) Failing after 23s
e2e-cache / Test yarn subprojects managed by git (18) (push) Failing after 33s
e2e-cache / Test yarn subprojects managed by git (20) (push) Failing after 27s
Licensed / Licensed (push) Failing after 3s
proxy / test-proxy (push) Failing after 8s
e2e-cache / Test yarn subprojects managed by git (22) (push) Failing after 31s
proxy / test-bypass-proxy (push) Failing after 34s
versions / local-cache (18, ubuntu-latest) (push) Failing after 30s
versions / local-cache (20, ubuntu-latest) (push) Successful in 32s
versions / local-cache (22, ubuntu-latest) (push) Failing after 31s
versions / lts-syntax (lts/*, ubuntu-latest) (push) Failing after 30s
versions / lts-syntax (lts/-1, ubuntu-latest) (push) Failing after 30s
versions / lts-syntax (lts/dubnium, ubuntu-latest) (push) Failing after 31s
versions / lts-syntax (lts/erbium, ubuntu-latest) (push) Failing after 31s
versions / lts-syntax (lts/fermium, ubuntu-latest) (push) Failing after 32s
e2e-cache / Test npm (Node 18, ubuntu-latest) (push) Successful in 9m45s
versions / v8-canary-syntax (20-v8-canary, ubuntu-latest) (push) Successful in 39s
e2e-cache / Test npm (Node 20, ubuntu-latest) (push) Successful in 9m53s
e2e-cache / Test npm (Node 22, ubuntu-latest) (push) Successful in 9m50s
versions / v8-canary-syntax (20.0.0-v8-canary, ubuntu-latest) (push) Successful in 32s
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, ubuntu-latest) (push) Successful in 35s
versions / nightly-syntax (18.0.0-nightly, ubuntu-latest) (push) Successful in 34s
versions / nightly-syntax (20-nightly, ubuntu-latest) (push) Successful in 36s
versions / nightly-syntax (21-nightly, ubuntu-latest) (push) Successful in 39s
versions / rc-syntax (18.0.0-rc.2, ubuntu-latest) (push) Successful in 39s
versions / rc-syntax (19.0.0-rc.0, ubuntu-latest) (push) Successful in 31s
versions / rc-syntax (20.0.0-rc.1, ubuntu-latest) (push) Successful in 38s
versions / manifest (18.20.0, ubuntu-latest) (push) Successful in 45s
versions / manifest (22.0.0, ubuntu-latest) (push) Successful in 36s
versions / manifest (20.10.0, ubuntu-latest) (push) Successful in 41s
versions / check-latest (18, ubuntu-latest) (push) Successful in 49s
versions / check-latest (20, ubuntu-latest) (push) Successful in 32s
versions / check-latest (22, ubuntu-latest) (push) Successful in 31s
versions / version-file (.nvmrc, ubuntu-latest) (push) Successful in 39s
versions / version-file (.tool-versions, ubuntu-latest) (push) Successful in 41s
versions / version-file (.tool-versions-node, ubuntu-latest) (push) Successful in 33s
versions / version-file (package.json, ubuntu-latest) (push) Successful in 36s
versions / version-file-volta (ubuntu-latest) (push) Successful in 32s
versions / node-dist (17, ubuntu-latest) (push) Successful in 36s
versions / version-file-volta-extends (ubuntu-latest) (push) Successful in 39s
versions / old-versions (ubuntu-latest) (push) Successful in 29s
versions / node-dist (19, ubuntu-latest) (push) Successful in 38s
versions / node-latest-aliases (latest, ubuntu-latest) (push) Successful in 32s
versions / node-latest-aliases (current, ubuntu-latest) (push) Successful in 40s
versions / node-latest-aliases (node, ubuntu-latest) (push) Successful in 32s
e2e-cache / Test npm (Node 18, macos-13) (push) Has been cancelled
e2e-cache / Test npm (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 20, macos-13) (push) Has been cancelled
e2e-cache / Test npm (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, macos-13) (push) Has been cancelled
e2e-cache / Test npm (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 18, macos-13) (push) Has been cancelled
e2e-cache / Test pnpm (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, macos-13) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, macos-13) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 18, macos-13) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, macos-13) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 18, macos-13) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, macos-13) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, macos-latest) (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-13) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, windows-latest) (push) Has been cancelled
versions / local-cache (18, macos-13) (push) Has been cancelled
versions / local-cache (18, macos-latest) (push) Has been cancelled
versions / local-cache (18, windows-latest) (push) Has been cancelled
versions / local-cache (20, macos-13) (push) Has been cancelled
versions / local-cache (20, macos-latest) (push) Has been cancelled
versions / local-cache (20, windows-latest) (push) Has been cancelled
versions / local-cache (22, macos-13) (push) Has been cancelled
versions / local-cache (22, macos-latest) (push) Has been cancelled
versions / local-cache (22, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/*, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/*, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/-1, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/-1, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/erbium, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/erbium, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/fermium, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/fermium, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, macos-13) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, macos-latest) (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-13) (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, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, macos-13) (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, windows-latest) (push) Has been cancelled
versions / nightly-syntax (18.0.0-nightly, macos-13) (push) Has been cancelled
versions / nightly-syntax (18.0.0-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (18.0.0-nightly, windows-latest) (push) Has been cancelled
versions / nightly-syntax (20-nightly, macos-13) (push) Has been cancelled
versions / nightly-syntax (20-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (20-nightly, windows-latest) (push) Has been cancelled
versions / nightly-syntax (21-nightly, macos-13) (push) Has been cancelled
versions / nightly-syntax (21-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (21-nightly, windows-latest) (push) Has been cancelled
versions / rc-syntax (18.0.0-rc.2, macos-13) (push) Has been cancelled
versions / rc-syntax (18.0.0-rc.2, macos-latest) (push) Has been cancelled
versions / rc-syntax (18.0.0-rc.2, windows-latest) (push) Has been cancelled
versions / rc-syntax (19.0.0-rc.0, macos-13) (push) Has been cancelled
versions / rc-syntax (19.0.0-rc.0, macos-latest) (push) Has been cancelled
versions / rc-syntax (19.0.0-rc.0, windows-latest) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, macos-13) (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, windows-latest) (push) Has been cancelled
versions / manifest (18.20.0, macos-13) (push) Has been cancelled
versions / manifest (18.20.0, macos-latest) (push) Has been cancelled
versions / manifest (18.20.0, windows-latest) (push) Has been cancelled
versions / manifest (20.10.0, macos-13) (push) Has been cancelled
versions / manifest (20.10.0, macos-latest) (push) Has been cancelled
versions / manifest (20.10.0, windows-latest) (push) Has been cancelled
versions / manifest (22.0.0, macos-13) (push) Has been cancelled
versions / manifest (22.0.0, macos-latest) (push) Has been cancelled
versions / manifest (22.0.0, windows-latest) (push) Has been cancelled
versions / check-latest (18, macos-13) (push) Has been cancelled
versions / check-latest (18, macos-latest) (push) Has been cancelled
versions / check-latest (18, windows-latest) (push) Has been cancelled
versions / check-latest (20, macos-13) (push) Has been cancelled
versions / check-latest (20, macos-latest) (push) Has been cancelled
versions / check-latest (20, windows-latest) (push) Has been cancelled
versions / check-latest (22, macos-13) (push) Has been cancelled
versions / check-latest (22, macos-latest) (push) Has been cancelled
versions / check-latest (22, windows-latest) (push) Has been cancelled
versions / version-file (.nvmrc, macos-13) (push) Has been cancelled
versions / version-file (.nvmrc, macos-latest) (push) Has been cancelled
versions / version-file (.nvmrc, windows-latest) (push) Has been cancelled
versions / version-file (.tool-versions, macos-13) (push) Has been cancelled
versions / version-file (.tool-versions, macos-latest) (push) Has been cancelled
versions / version-file (.tool-versions, windows-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, macos-13) (push) Has been cancelled
versions / version-file (.tool-versions-node, macos-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, windows-latest) (push) Has been cancelled
versions / version-file (package.json, macos-13) (push) Has been cancelled
versions / version-file (package.json, macos-latest) (push) Has been cancelled
versions / version-file (package.json, windows-latest) (push) Has been cancelled
versions / version-file-volta (macos-13) (push) Has been cancelled
versions / version-file-volta (macos-latest) (push) Has been cancelled
versions / version-file-volta (windows-latest) (push) Has been cancelled
versions / version-file-volta-extends (macos-13) (push) Has been cancelled
versions / version-file-volta-extends (macos-latest) (push) Has been cancelled
versions / version-file-volta-extends (windows-latest) (push) Has been cancelled
versions / node-dist (17, macos-13) (push) Has been cancelled
versions / node-dist (17, macos-latest) (push) Has been cancelled
versions / node-dist (17, windows-latest) (push) Has been cancelled
versions / node-dist (19, macos-13) (push) Has been cancelled
versions / node-dist (19, macos-latest) (push) Has been cancelled
versions / node-dist (19, windows-latest) (push) Has been cancelled
versions / old-versions (macos-13) (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-13) (push) Has been cancelled
versions / node-latest-aliases (current, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (current, windows-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, macos-13) (push) Has been cancelled
versions / node-latest-aliases (latest, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, windows-latest) (push) Has been cancelled
versions / node-latest-aliases (node, macos-13) (push) Has been cancelled
versions / node-latest-aliases (node, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (node, windows-latest) (push) Has been cancelled

* feat: support private mirrors

* chore: change fallback message with mirrors
This commit is contained in:
Marco Ippolito
2025-04-02 17:49:47 +02:00
committed by GitHub
parent 40337cb8f7
commit e3ce749e20
14 changed files with 322 additions and 44 deletions

54
dist/setup/index.js vendored
View File

@@ -97211,9 +97211,13 @@ class BaseDistribution {
}
getNodeJsVersions() {
return __awaiter(this, void 0, void 0, function* () {
const initialUrl = this.getDistributionUrl();
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror);
const dataUrl = `${initialUrl}/index.json`;
const response = yield this.httpClient.getJson(dataUrl);
const headers = {};
if (this.nodeInfo.mirrorToken) {
headers['Authorization'] = `Bearer ${this.nodeInfo.mirrorToken}`;
}
const response = yield this.httpClient.getJson(dataUrl, headers);
return response.result || [];
});
}
@@ -97228,7 +97232,7 @@ class BaseDistribution {
? `${fileName}.zip`
: `${fileName}.7z`
: `${fileName}.tar.gz`;
const initialUrl = this.getDistributionUrl();
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror);
const url = `${initialUrl}/v${version}/${urlFileName}`;
return {
downloadUrl: url,
@@ -97242,7 +97246,7 @@ class BaseDistribution {
let downloadPath = '';
core.info(`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`);
try {
downloadPath = yield tc.downloadTool(info.downloadUrl);
downloadPath = yield tc.downloadTool(info.downloadUrl, undefined, this.nodeInfo.mirrorToken);
}
catch (err) {
if (err instanceof tc.HTTPError &&
@@ -97266,7 +97270,7 @@ class BaseDistribution {
}
acquireWindowsNodeFromFallbackLocation(version_1) {
return __awaiter(this, arguments, void 0, function* (version, arch = os_1.default.arch()) {
const initialUrl = this.getDistributionUrl();
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror);
const osArch = this.translateArchToDistUrl(arch);
// Create temporary folder to download to
const tempDownloadFolder = `temp_${(0, uuid_1.v4)()}`;
@@ -97280,18 +97284,18 @@ class BaseDistribution {
exeUrl = `${initialUrl}/v${version}/win-${osArch}/node.exe`;
libUrl = `${initialUrl}/v${version}/win-${osArch}/node.lib`;
core.info(`Downloading only node binary from ${exeUrl}`);
const exePath = yield tc.downloadTool(exeUrl);
const exePath = yield tc.downloadTool(exeUrl, undefined, this.nodeInfo.mirrorToken);
yield io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = yield tc.downloadTool(libUrl);
const libPath = yield tc.downloadTool(libUrl, undefined, this.nodeInfo.mirrorToken);
yield io.cp(libPath, path.join(tempDir, 'node.lib'));
}
catch (err) {
if (err instanceof tc.HTTPError && err.httpStatusCode == 404) {
exeUrl = `${initialUrl}/v${version}/node.exe`;
libUrl = `${initialUrl}/v${version}/node.lib`;
const exePath = yield tc.downloadTool(exeUrl);
const exePath = yield tc.downloadTool(exeUrl, undefined, this.nodeInfo.mirrorToken);
yield io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = yield tc.downloadTool(libUrl);
const libPath = yield tc.downloadTool(libUrl, undefined, this.nodeInfo.mirrorToken);
yield io.cp(libPath, path.join(tempDir, 'node.lib'));
}
else {
@@ -97454,8 +97458,9 @@ class NightlyNodejs extends base_distribution_prerelease_1.default {
super(nodeInfo);
this.distribution = 'nightly';
}
getDistributionUrl() {
return 'https://nodejs.org/download/nightly';
getDistributionUrl(mirror) {
const url = mirror || 'https://nodejs.org';
return `${url}/download/nightly`;
}
}
exports["default"] = NightlyNodejs;
@@ -97553,13 +97558,13 @@ class OfficialBuilds extends base_distribution_1.default {
const versionInfo = yield this.getInfoFromManifest(this.nodeInfo.versionSpec, this.nodeInfo.stable, osArch, manifest);
if (versionInfo) {
core.info(`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`);
downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.auth);
downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth);
if (downloadPath) {
toolPath = yield this.extractArchive(downloadPath, versionInfo, false);
}
}
else {
core.info('Not found in manifest. Falling back to download directly from Node');
core.info(`Not found in manifest. Falling back to download directly from ${this.nodeInfo.mirror || 'Node'}`);
}
}
catch (err) {
@@ -97621,12 +97626,13 @@ class OfficialBuilds extends base_distribution_1.default {
version = super.evaluateVersions(versions);
return version;
}
getDistributionUrl() {
return `https://nodejs.org/dist`;
getDistributionUrl(mirror) {
const url = mirror || 'https://nodejs.org';
return `${url}/dist`;
}
getManifest() {
core.debug('Getting manifest from actions/node-versions@main');
return tc.getManifestFromRepo('actions', 'node-versions', this.nodeInfo.auth, 'main');
return tc.getManifestFromRepo('actions', 'node-versions', this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth, 'main');
}
resolveLtsAliasFromManifest(versionSpec, stable, manifest) {
var _a;
@@ -97709,8 +97715,9 @@ class RcBuild extends base_distribution_1.default {
constructor(nodeInfo) {
super(nodeInfo);
}
getDistributionUrl() {
return 'https://nodejs.org/download/rc';
getDistributionUrl(mirror) {
const url = mirror || 'https://nodejs.org';
return `${url}/download/rc`;
}
}
exports["default"] = RcBuild;
@@ -97733,8 +97740,9 @@ class CanaryBuild extends base_distribution_prerelease_1.default {
super(nodeInfo);
this.distribution = 'v8-canary';
}
getDistributionUrl() {
return 'https://nodejs.org/download/v8-canary';
getDistributionUrl(mirror) {
const url = mirror || 'https://nodejs.org';
return `${url}/download/v8-canary`;
}
}
exports["default"] = CanaryBuild;
@@ -97814,6 +97822,8 @@ function run() {
if (version) {
const token = core.getInput('token');
const auth = !token ? undefined : `token ${token}`;
const mirror = core.getInput('mirror');
const mirrorToken = core.getInput('mirror-token');
const stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
const checkLatest = (core.getInput('check-latest') || 'false').toUpperCase() === 'TRUE';
const nodejsInfo = {
@@ -97821,7 +97831,9 @@ function run() {
checkLatest,
auth,
stable,
arch
arch,
mirror,
mirrorToken
};
const nodeDistribution = (0, installer_factory_1.getNodejsDistribution)(nodejsInfo);
yield nodeDistribution.setupNodeJs();