Compare commits

..

2 Commits

Author SHA1 Message Date
Marco Ippolito
018279a706 Merge b431a178ef into 802632921f 2025-03-07 12:58:01 +00:00
Marco Ippolito
b431a178ef feat: support private mirrors 2025-03-07 13:57:53 +01:00
3 changed files with 35 additions and 12 deletions

View File

@@ -449,8 +449,8 @@ describe('setup-node', () => {
}
}, 100000);
it('acquires specified architecture of node', async () => {
for (const { arch, version, osSpec } of [
it('acquires specified architecture of node from mirror', async () => {
for (const {arch, version, osSpec} of [
{
arch: 'x86',
version: '18.0.0-nightly202110204cb3e06ed8',

View File

@@ -830,9 +830,9 @@ describe('setup-node', () => {
});
it('acquires specified architecture of node from mirror', async () => {
for (const { arch, version, osSpec } of [
{ arch: 'x86', version: '12.16.2', osSpec: 'win32' },
{ arch: 'x86', version: '14.0.0', osSpec: 'win32' }
for (const {arch, version, osSpec} of [
{arch: 'x86', version: '12.16.2', osSpec: 'win32'},
{arch: 'x86', version: '14.0.0', osSpec: 'win32'}
]) {
os.platform = osSpec;
os.arch = arch;

View File

@@ -102,11 +102,14 @@ export default abstract class BaseDistribution {
const headers = {};
if(this.nodeInfo.mirrorToken) {
if (this.nodeInfo.mirrorToken) {
headers['Authorization'] = `Bearer ${this.nodeInfo.mirrorToken}`;
}
const response = await this.httpClient.getJson<INodeVersion[]>(dataUrl, headers);
const response = await this.httpClient.getJson<INodeVersion[]>(
dataUrl,
headers
);
return response.result || [];
}
@@ -140,7 +143,11 @@ export default abstract class BaseDistribution {
`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`
);
try {
downloadPath = await tc.downloadTool(info.downloadUrl, undefined, this.nodeInfo.mirrorToken);
downloadPath = await tc.downloadTool(
info.downloadUrl,
undefined,
this.nodeInfo.mirrorToken
);
} catch (err) {
if (
err instanceof tc.HTTPError &&
@@ -191,18 +198,34 @@ export default abstract class BaseDistribution {
core.info(`Downloading only node binary from ${exeUrl}`);
const exePath = await tc.downloadTool(exeUrl, undefined, this.nodeInfo.mirrorToken);
const exePath = await tc.downloadTool(
exeUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = await tc.downloadTool(libUrl, undefined, this.nodeInfo.mirrorToken);
const libPath = await tc.downloadTool(
libUrl,
undefined,
this.nodeInfo.mirrorToken
);
await 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 = await tc.downloadTool(exeUrl, undefined, this.nodeInfo.mirrorToken);
const exePath = await tc.downloadTool(
exeUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = await tc.downloadTool(libUrl, undefined, this.nodeInfo.mirrorToken);
const libPath = await tc.downloadTool(
libUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(libPath, path.join(tempDir, 'node.lib'));
} else {
throw err;