Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
cdca7365b2 Bump @actions/tool-cache from 2.0.1 to 2.0.2 (#1220)
Some checks failed
Basic validation / Basic validation (push) Failing after 4s
CodeQL analysis / CodeQL analysis (push) Failing after 2s
Check dist / Check dist/ (push) Failing after 23s
e2e-cache / Test pnpm (Node 20, ubuntu-latest) (push) Failing after 37s
e2e-cache / Test pnpm (Node 18, ubuntu-latest) (push) Failing after 1m20s
e2e-cache / Test pnpm (Node 22, ubuntu-latest) (push) Failing after 36s
e2e-cache / Test yarn 1 (Node 18, ubuntu-latest) (push) Failing after 37s
e2e-cache / Test yarn 1 (Node 20, ubuntu-latest) (push) Failing after 18s
e2e-cache / Test yarn 3 (Node 18, ubuntu-latest) (push) Failing after 37s
e2e-cache / Test yarn 3 (Node 20, ubuntu-latest) (push) Failing after 15s
e2e-cache / Test yarn 3 (Node 22, ubuntu-latest) (push) Failing after 36s
e2e-cache / Test yarn subprojects (18) (push) Failing after 12s
e2e-cache / Test yarn subprojects (20) (push) Failing after 33s
e2e-cache / Test yarn subprojects (22) (push) Failing after 14s
e2e-cache / Test yarn subprojects all locally managed (18) (push) Failing after 32s
e2e-cache / Test yarn subprojects all locally managed (20) (push) Failing after 14s
e2e-cache / Test yarn subprojects some locally managed (18) (push) Failing after 11s
e2e-cache / Test yarn subprojects all locally managed (22) (push) Failing after 33s
e2e-cache / Test yarn subprojects some locally managed (22) (push) Failing after 31s
e2e-cache / Test yarn subprojects some locally managed (20) (push) Failing after 17s
e2e-cache / Test yarn subprojects managed by git (20) (push) Failing after 11s
e2e-cache / Test yarn subprojects managed by git (22) (push) Failing after 13s
Licensed / Licensed (push) Failing after 2s
proxy / test-proxy (push) Failing after 8s
proxy / test-bypass-proxy (push) Failing after 45s
e2e-cache / Test yarn subprojects managed by git (18) (push) Failing after 2m4s
versions / local-cache (18, ubuntu-latest) (push) Successful in 17s
versions / local-cache (20, ubuntu-latest) (push) Failing after 45s
versions / local-cache (22, ubuntu-latest) (push) Successful in 15s
versions / lts-syntax (lts/-1, ubuntu-latest) (push) Failing after 16s
versions / lts-syntax (lts/*, ubuntu-latest) (push) Failing after 45s
versions / lts-syntax (lts/dubnium, ubuntu-latest) (push) Failing after 16s
versions / lts-syntax (lts/erbium, ubuntu-latest) (push) Failing after 44s
versions / lts-syntax (lts/fermium, ubuntu-latest) (push) Failing after 15s
versions / v8-canary-syntax (20.0.0-v8-canary, ubuntu-latest) (push) Successful in 22s
versions / v8-canary-syntax (20-v8-canary, ubuntu-latest) (push) Failing after 45s
versions / nightly-syntax (18.0.0-nightly, ubuntu-latest) (push) Successful in 17s
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, ubuntu-latest) (push) Failing after 45s
versions / nightly-syntax (20-nightly, ubuntu-latest) (push) Successful in 14s
versions / rc-syntax (18.0.0-rc.2, ubuntu-latest) (push) Successful in 15s
versions / nightly-syntax (21-nightly, ubuntu-latest) (push) Failing after 46s
versions / rc-syntax (20.0.0-rc.1, ubuntu-latest) (push) Successful in 15s
versions / rc-syntax (19.0.0-rc.0, ubuntu-latest) (push) Failing after 45s
versions / manifest (18.20.0, ubuntu-latest) (push) Successful in 16s
versions / manifest (20.10.0, ubuntu-latest) (push) Failing after 45s
versions / manifest (22.0.0, ubuntu-latest) (push) Successful in 15s
e2e-cache / Test npm (Node 18, ubuntu-latest) (push) Successful in 9m42s
e2e-cache / Test npm (Node 20, ubuntu-latest) (push) Successful in 9m41s
versions / check-latest (20, ubuntu-latest) (push) Successful in 21s
e2e-cache / Test npm (Node 22, ubuntu-latest) (push) Successful in 9m41s
versions / check-latest (18, ubuntu-latest) (push) Failing after 49s
versions / check-latest (22, ubuntu-latest) (push) Successful in 15s
versions / version-file (.tool-versions, ubuntu-latest) (push) Successful in 16s
versions / version-file (.tool-versions-node, ubuntu-latest) (push) Successful in 16s
versions / version-file (.nvmrc, ubuntu-latest) (push) Successful in 20s
versions / version-file-volta (ubuntu-latest) (push) Successful in 14s
versions / version-file (package.json, ubuntu-latest) (push) Failing after 45s
versions / version-file-volta-extends (ubuntu-latest) (push) Successful in 23s
versions / node-dist (17, ubuntu-latest) (push) Successful in 20s
versions / node-dist (19, ubuntu-latest) (push) Successful in 18s
versions / old-versions (ubuntu-latest) (push) Successful in 15s
versions / node-latest-aliases (latest, ubuntu-latest) (push) Successful in 13s
versions / node-latest-aliases (node, ubuntu-latest) (push) Successful in 14s
versions / node-latest-aliases (current, ubuntu-latest) (push) Failing after 45s
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
* Bump @actions/tool-cache from 2.0.1 to 2.0.2

Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 2.0.1 to 2.0.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* check failures fix

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-03-13 12:18:32 -05:00
18 changed files with 90 additions and 455 deletions

View File

@@ -1,6 +1,6 @@
--- ---
name: "@actions/tool-cache" name: "@actions/tool-cache"
version: 2.0.1 version: 2.0.2
type: npm type: npm
summary: Actions tool-cache lib summary: Actions tool-cache lib
homepage: https://github.com/actions/toolkit/tree/main/packages/tool-cache homepage: https://github.com/actions/toolkit/tree/main/packages/tool-cache

View File

@@ -1,39 +0,0 @@
---
name: uuid
version: 3.4.0
type: npm
summary: RFC4122 (v1, v4, and v5) UUIDs
homepage: https://github.com/uuidjs/uuid#readme
license: mit
licenses:
- sources: LICENSE.md
text: |
The MIT License (MIT)
Copyright (c) 2010-2016 Robert Kieffer and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
notices:
- sources: AUTHORS
text: |-
Robert Kieffer <robert@broofa.com>
Christoph Tavan <dev@tavan.de>
AJ ONeal <coolaj86@gmail.com>
Vincent Voyer <vincent@zeroload.net>
Roman Shtylman <shtylman@gmail.com>

View File

@@ -76,21 +76,6 @@ See [action.yml](action.yml)
# Set always-auth option in npmrc file. # Set always-auth option in npmrc file.
# Default: '' # Default: ''
always-auth: '' always-auth: ''
# Optional mirror to download binaries from.
# Artifacts need to match the official Node.js
# Example:
# V8 Canaray Build: <mirror_url>/download/v8-canary
# RC Build: <mirror_url>/download/rc
# Official: Build <mirror_url>/dist
# Nightly build: <mirror_url>/download/nightly
# Default: ''
mirror: ''
# Optional mirror token.
# The token will be used as a bearer token in the Authorization header
# Default: ''
mirror-token: ''
``` ```
<!-- end usage --> <!-- end usage -->

View File

@@ -498,70 +498,6 @@ describe('setup-node', () => {
); );
} }
); );
it.each([
[
'20.0.0-v8-canary',
'20.0.0-v8-canary20221103f7e2421e91',
'20.0.0-v8-canary20221030fefe1c0879',
'https://my_mirror.org/download/v8-canary/v20.0.0-v8-canary20221103f7e2421e91/node-v20.0.0-v8-canary20221103f7e2421e91-linux-x64.tar.gz'
],
[
'20-v8-canary',
'20.0.0-v8-canary20221103f7e2421e91',
'20.0.0-v8-canary20221030fefe1c0879',
'https://my_mirror.org/download/v8-canary/v20.0.0-v8-canary20221103f7e2421e91/node-v20.0.0-v8-canary20221103f7e2421e91-linux-x64.tar.gz'
],
[
'19.0.0-v8-canary',
'19.0.0-v8-canary202210187d6960f23f',
'19.0.0-v8-canary202210172ec229fc56',
'https://my_mirror.org/download/v8-canary/v19.0.0-v8-canary202210187d6960f23f/node-v19.0.0-v8-canary202210187d6960f23f-linux-x64.tar.gz'
],
[
'19-v8-canary',
'19.0.0-v8-canary202210187d6960f23f',
'19.0.0-v8-canary202210172ec229fc56',
'https://my_mirror.org/download/v8-canary/v19.0.0-v8-canary202210187d6960f23f/node-v19.0.0-v8-canary202210187d6960f23f-linux-x64.tar.gz'
]
])(
'get %s version from dist if check-latest is true',
async (input, expectedVersion, foundVersion, expectedUrl) => {
const foundToolPath = path.normalize(`/cache/node/${foundVersion}/x64`);
const toolPath = path.normalize(`/cache/node/${expectedVersion}/x64`);
inputs['node-version'] = input;
inputs['check-latest'] = 'true';
os['arch'] = 'x64';
os['platform'] = 'linux';
inputs['mirror'] = 'https://my_mirror.org';
inputs['mirror-token'] = 'faketoken';
findSpy.mockReturnValue(foundToolPath);
findAllVersionsSpy.mockReturnValue([
'20.0.0-v8-canary20221030fefe1c0879',
'19.0.0-v8-canary202210172ec229fc56',
'20.0.0-v8-canary2022102310ff1e5a8d'
]);
dlSpy.mockImplementation(async () => '/some/temp/path');
exSpy.mockImplementation(async () => '/some/other/temp/path');
cacheSpy.mockImplementation(async () => toolPath);
// act
await main.run();
// assert
expect(findAllVersionsSpy).toHaveBeenCalled();
expect(logSpy).toHaveBeenCalledWith(
`Acquiring ${expectedVersion} - ${os.arch} from ${expectedUrl}`
);
expect(logSpy).toHaveBeenCalledWith('Extracting ...');
expect(logSpy).toHaveBeenCalledWith('Adding to the cache ...');
expect(cnSpy).toHaveBeenCalledWith(
`::add-path::${path.join(toolPath, 'bin')}${osm.EOL}`
);
}
);
}); });
describe('setup-node v8 canary tests', () => { describe('setup-node v8 canary tests', () => {

View File

@@ -315,7 +315,7 @@ describe('setup-node', () => {
await main.run(); await main.run();
workingUrls.forEach(url => { workingUrls.forEach(url => {
expect(dlSpy).toHaveBeenCalledWith(url, undefined, undefined); expect(dlSpy).toHaveBeenCalledWith(url);
}); });
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${toolPath}${osm.EOL}`); expect(cnSpy).toHaveBeenCalledWith(`::add-path::${toolPath}${osm.EOL}`);
}); });
@@ -449,54 +449,6 @@ describe('setup-node', () => {
} }
}, 100000); }, 100000);
it('acquires specified architecture of node from mirror', async () => {
for (const {arch, version, osSpec} of [
{
arch: 'x86',
version: '18.0.0-nightly202110204cb3e06ed8',
osSpec: 'win32'
},
{
arch: 'x86',
version: '20.0.0-nightly2022101987cdf7d412',
osSpec: 'win32'
}
]) {
os.platform = osSpec;
os.arch = arch;
const fileExtension = os.platform === 'win32' ? '7z' : 'tar.gz';
const platform = {
linux: 'linux',
darwin: 'darwin',
win32: 'win'
}[os.platform];
inputs['node-version'] = version;
inputs['architecture'] = arch;
inputs['always-auth'] = false;
inputs['token'] = 'faketoken';
inputs['mirror'] = 'https://my-mirror.org';
inputs['mirror-token'] = 'my-mirror-token';
const expectedUrl = `https://my-mirror.org/download/nightly/v${version}/node-v${version}-${platform}-${arch}.${fileExtension}`;
// ... but not in the local cache
findSpy.mockImplementation(() => '');
findAllVersionsSpy.mockImplementation(() => []);
dlSpy.mockImplementation(async () => '/some/temp/path');
const toolPath = path.normalize(`/cache/node/${version}/${arch}`);
exSpy.mockImplementation(async () => '/some/other/temp/path');
cacheSpy.mockImplementation(async () => toolPath);
await main.run();
expect(dlSpy).toHaveBeenCalled();
expect(logSpy).toHaveBeenCalledWith(
`Acquiring ${version} - ${arch} from ${expectedUrl}`
);
}
}, 100000);
describe('nightly versions', () => { describe('nightly versions', () => {
it.each([ it.each([
[ [

View File

@@ -828,46 +828,4 @@ 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'}
]) {
os.platform = osSpec;
os.arch = arch;
const fileExtension = os.platform === 'win32' ? '7z' : 'tar.gz';
const platform = {
linux: 'linux',
darwin: 'darwin',
win32: 'win'
}[os.platform];
inputs['node-version'] = version;
inputs['architecture'] = arch;
inputs['always-auth'] = false;
inputs['token'] = 'faketoken';
inputs['mirror'] = 'https://my_mirror_url';
inputs['mirror-token'] = 'faketoken';
const expectedUrl =
arch === 'x64'
? `https://github.com/actions/node-versions/releases/download/${version}/node-${version}-${platform}-${arch}.zip`
: `https://my_mirror_url/dist/v${version}/node-v${version}-${platform}-${arch}.${fileExtension}`;
// ... but not in the local cache
findSpy.mockImplementation(() => '');
dlSpy.mockImplementation(async () => '/some/temp/path');
const toolPath = path.normalize(`/cache/node/${version}/${arch}`);
exSpy.mockImplementation(async () => '/some/other/temp/path');
cacheSpy.mockImplementation(async () => toolPath);
await main.run();
expect(dlSpy).toHaveBeenCalled();
expect(logSpy).toHaveBeenCalledWith(
`Acquiring ${version} - ${arch} from ${expectedUrl}`
);
}
}, 100000);
}); });

View File

@@ -25,10 +25,6 @@ inputs:
description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.' description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.'
cache-dependency-path: cache-dependency-path:
description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.' description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.'
mirror:
description: 'Used to specify an alternative mirror to downlooad Node.js binaries from'
mirror-token:
description: 'The token used as Authorization header when fetching from the mirror'
# TODO: add input to control forcing to pull from cloud or dist. # TODO: add input to control forcing to pull from cloud or dist.
# escape valve for someone having issues or needing the absolute latest which isn't cached yet # escape valve for someone having issues or needing the absolute latest which isn't cached yet
outputs: outputs:

208
dist/setup/index.js vendored
View File

@@ -10371,7 +10371,11 @@ function copyFile(srcFile, destFile, force) {
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
@@ -10384,7 +10388,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) { var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod; if (mod && mod.__esModule) return mod;
var result = {}; var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod); __setModuleDefault(result, mod);
return result; return result;
}; };
@@ -10414,11 +10418,11 @@ function _findMatch(versionSpec, stable, candidates, archFilter) {
let file; let file;
for (const candidate of candidates) { for (const candidate of candidates) {
const version = candidate.version; const version = candidate.version;
core_1.debug(`check ${version} satisfies ${versionSpec}`); (0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver.satisfies(version, versionSpec) && if (semver.satisfies(version, versionSpec) &&
(!stable || candidate.stable === stable)) { (!stable || candidate.stable === stable)) {
file = candidate.files.find(item => { file = candidate.files.find(item => {
core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`); (0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter; let chk = item.arch === archFilter && item.platform === platFilter;
if (chk && item.platform_version) { if (chk && item.platform_version) {
const osVersion = module.exports._getOsVersion(); const osVersion = module.exports._getOsVersion();
@@ -10432,7 +10436,7 @@ function _findMatch(versionSpec, stable, candidates, archFilter) {
return chk; return chk;
}); });
if (file) { if (file) {
core_1.debug(`matched ${candidate.version}`); (0, core_1.debug)(`matched ${candidate.version}`);
match = candidate; match = candidate;
break; break;
} }
@@ -10470,10 +10474,7 @@ function _getOsVersion() {
if (parts.length === 2 && if (parts.length === 2 &&
(parts[0].trim() === 'VERSION_ID' || (parts[0].trim() === 'VERSION_ID' ||
parts[0].trim() === 'DISTRIB_RELEASE')) { parts[0].trim() === 'DISTRIB_RELEASE')) {
version = parts[1] version = parts[1].trim().replace(/^"/, '').replace(/"$/, '');
.trim()
.replace(/^"/, '')
.replace(/"$/, '');
break; break;
} }
} }
@@ -10506,7 +10507,11 @@ exports._readLinuxVersionFile = _readLinuxVersionFile;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
@@ -10519,7 +10524,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) { var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod; if (mod && mod.__esModule) return mod;
var result = {}; var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod); __setModuleDefault(result, mod);
return result; return result;
}; };
@@ -10596,7 +10601,11 @@ exports.RetryHelper = RetryHelper;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
@@ -10609,7 +10618,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) { var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod; if (mod && mod.__esModule) return mod;
var result = {}; var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod); __setModuleDefault(result, mod);
return result; return result;
}; };
@@ -10622,13 +10631,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
step((generator = generator.apply(thisArg, _arguments || [])).next()); step((generator = generator.apply(thisArg, _arguments || [])).next());
}); });
}; };
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0; exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0;
const core = __importStar(__nccwpck_require__(7484)); const core = __importStar(__nccwpck_require__(7484));
const io = __importStar(__nccwpck_require__(4994)); const io = __importStar(__nccwpck_require__(4994));
const crypto = __importStar(__nccwpck_require__(6982));
const fs = __importStar(__nccwpck_require__(9896)); const fs = __importStar(__nccwpck_require__(9896));
const mm = __importStar(__nccwpck_require__(8036)); const mm = __importStar(__nccwpck_require__(8036));
const os = __importStar(__nccwpck_require__(857)); const os = __importStar(__nccwpck_require__(857));
@@ -10638,7 +10645,6 @@ const semver = __importStar(__nccwpck_require__(6193));
const stream = __importStar(__nccwpck_require__(2203)); const stream = __importStar(__nccwpck_require__(2203));
const util = __importStar(__nccwpck_require__(9023)); const util = __importStar(__nccwpck_require__(9023));
const assert_1 = __nccwpck_require__(2613); const assert_1 = __nccwpck_require__(2613);
const v4_1 = __importDefault(__nccwpck_require__(1350));
const exec_1 = __nccwpck_require__(5236); const exec_1 = __nccwpck_require__(5236);
const retry_helper_1 = __nccwpck_require__(7380); const retry_helper_1 = __nccwpck_require__(7380);
class HTTPError extends Error { class HTTPError extends Error {
@@ -10663,7 +10669,7 @@ const userAgent = 'actions/tool-cache';
*/ */
function downloadTool(url, dest, auth, headers) { function downloadTool(url, dest, auth, headers) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
dest = dest || path.join(_getTempDirectory(), v4_1.default()); dest = dest || path.join(_getTempDirectory(), crypto.randomUUID());
yield io.mkdirP(path.dirname(dest)); yield io.mkdirP(path.dirname(dest));
core.debug(`Downloading ${url}`); core.debug(`Downloading ${url}`);
core.debug(`Destination ${dest}`); core.debug(`Destination ${dest}`);
@@ -10752,8 +10758,8 @@ function downloadToolAttempt(url, dest, auth, headers) {
*/ */
function extract7z(file, dest, _7zPath) { function extract7z(file, dest, _7zPath) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); (0, assert_1.ok)(IS_WINDOWS, 'extract7z() not supported on current OS');
assert_1.ok(file, 'parameter "file" is required'); (0, assert_1.ok)(file, 'parameter "file" is required');
dest = yield _createExtractFolder(dest); dest = yield _createExtractFolder(dest);
const originalCwd = process.cwd(); const originalCwd = process.cwd();
process.chdir(dest); process.chdir(dest);
@@ -10770,7 +10776,7 @@ function extract7z(file, dest, _7zPath) {
const options = { const options = {
silent: true silent: true
}; };
yield exec_1.exec(`"${_7zPath}"`, args, options); yield (0, exec_1.exec)(`"${_7zPath}"`, args, options);
} }
finally { finally {
process.chdir(originalCwd); process.chdir(originalCwd);
@@ -10799,7 +10805,7 @@ function extract7z(file, dest, _7zPath) {
}; };
try { try {
const powershellPath = yield io.which('powershell', true); const powershellPath = yield io.which('powershell', true);
yield exec_1.exec(`"${powershellPath}"`, args, options); yield (0, exec_1.exec)(`"${powershellPath}"`, args, options);
} }
finally { finally {
process.chdir(originalCwd); process.chdir(originalCwd);
@@ -10827,7 +10833,7 @@ function extractTar(file, dest, flags = 'xz') {
// Determine whether GNU tar // Determine whether GNU tar
core.debug('Checking tar --version'); core.debug('Checking tar --version');
let versionOutput = ''; let versionOutput = '';
yield exec_1.exec('tar --version', [], { yield (0, exec_1.exec)('tar --version', [], {
ignoreReturnCode: true, ignoreReturnCode: true,
silent: true, silent: true,
listeners: { listeners: {
@@ -10863,7 +10869,7 @@ function extractTar(file, dest, flags = 'xz') {
args.push('--overwrite'); args.push('--overwrite');
} }
args.push('-C', destArg, '-f', fileArg); args.push('-C', destArg, '-f', fileArg);
yield exec_1.exec(`tar`, args); yield (0, exec_1.exec)(`tar`, args);
return dest; return dest;
}); });
} }
@@ -10878,8 +10884,8 @@ exports.extractTar = extractTar;
*/ */
function extractXar(file, dest, flags = []) { function extractXar(file, dest, flags = []) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
assert_1.ok(IS_MAC, 'extractXar() not supported on current OS'); (0, assert_1.ok)(IS_MAC, 'extractXar() not supported on current OS');
assert_1.ok(file, 'parameter "file" is required'); (0, assert_1.ok)(file, 'parameter "file" is required');
dest = yield _createExtractFolder(dest); dest = yield _createExtractFolder(dest);
let args; let args;
if (flags instanceof Array) { if (flags instanceof Array) {
@@ -10893,7 +10899,7 @@ function extractXar(file, dest, flags = []) {
args.push('-v'); args.push('-v');
} }
const xarPath = yield io.which('xar', true); const xarPath = yield io.which('xar', true);
yield exec_1.exec(`"${xarPath}"`, _unique(args)); yield (0, exec_1.exec)(`"${xarPath}"`, _unique(args));
return dest; return dest;
}); });
} }
@@ -10947,7 +10953,7 @@ function extractZipWin(file, dest) {
pwshCommand pwshCommand
]; ];
core.debug(`Using pwsh at path: ${pwshPath}`); core.debug(`Using pwsh at path: ${pwshPath}`);
yield exec_1.exec(`"${pwshPath}"`, args); yield (0, exec_1.exec)(`"${pwshPath}"`, args);
} }
else { else {
const powershellCommand = [ const powershellCommand = [
@@ -10968,7 +10974,7 @@ function extractZipWin(file, dest) {
]; ];
const powershellPath = yield io.which('powershell', true); const powershellPath = yield io.which('powershell', true);
core.debug(`Using powershell at path: ${powershellPath}`); core.debug(`Using powershell at path: ${powershellPath}`);
yield exec_1.exec(`"${powershellPath}"`, args); yield (0, exec_1.exec)(`"${powershellPath}"`, args);
} }
}); });
} }
@@ -10980,7 +10986,7 @@ function extractZipNix(file, dest) {
args.unshift('-q'); args.unshift('-q');
} }
args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run
yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest }); yield (0, exec_1.exec)(`"${unzipPath}"`, args, { cwd: dest });
}); });
} }
/** /**
@@ -11157,7 +11163,7 @@ function _createExtractFolder(dest) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (!dest) { if (!dest) {
// create a temp dir // create a temp dir
dest = path.join(_getTempDirectory(), v4_1.default()); dest = path.join(_getTempDirectory(), crypto.randomUUID());
} }
yield io.mkdirP(dest); yield io.mkdirP(dest);
return dest; return dest;
@@ -11230,7 +11236,7 @@ exports.evaluateVersions = evaluateVersions;
*/ */
function _getCacheDirectory() { function _getCacheDirectory() {
const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || ''; const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || '';
assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined'); (0, assert_1.ok)(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined');
return cacheDirectory; return cacheDirectory;
} }
/** /**
@@ -11238,7 +11244,7 @@ function _getCacheDirectory() {
*/ */
function _getTempDirectory() { function _getTempDirectory() {
const tempDirectory = process.env['RUNNER_TEMP'] || ''; const tempDirectory = process.env['RUNNER_TEMP'] || '';
assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); (0, assert_1.ok)(tempDirectory, 'Expected RUNNER_TEMP to be defined');
return tempDirectory; return tempDirectory;
} }
/** /**
@@ -12909,90 +12915,6 @@ function coerce (version, options) {
} }
/***/ }),
/***/ 2727:
/***/ ((module) => {
/**
* Convert array of 16 byte values to UUID string format of the form:
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
*/
var byteToHex = [];
for (var i = 0; i < 256; ++i) {
byteToHex[i] = (i + 0x100).toString(16).substr(1);
}
function bytesToUuid(buf, offset) {
var i = offset || 0;
var bth = byteToHex;
// join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
return ([
bth[buf[i++]], bth[buf[i++]],
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]],
bth[buf[i++]], bth[buf[i++]],
bth[buf[i++]], bth[buf[i++]]
]).join('');
}
module.exports = bytesToUuid;
/***/ }),
/***/ 9879:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
// Unique ID creation requires a high quality random # generator. In node.js
// this is pretty straight-forward - we use the crypto API.
var crypto = __nccwpck_require__(6982);
module.exports = function nodeRNG() {
return crypto.randomBytes(16);
};
/***/ }),
/***/ 1350:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
var rng = __nccwpck_require__(9879);
var bytesToUuid = __nccwpck_require__(2727);
function v4(options, buf, offset) {
var i = buf && offset || 0;
if (typeof(options) == 'string') {
buf = options === 'binary' ? new Array(16) : null;
options = null;
}
options = options || {};
var rnds = options.random || (options.rng || rng)();
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
rnds[6] = (rnds[6] & 0x0f) | 0x40;
rnds[8] = (rnds[8] & 0x3f) | 0x80;
// Copy bytes to buffer, if provided
if (buf) {
for (var ii = 0; ii < 16; ++ii) {
buf[i + ii] = rnds[ii];
}
}
return buf || bytesToUuid(rnds);
}
module.exports = v4;
/***/ }), /***/ }),
/***/ 8110: /***/ 8110:
@@ -97289,13 +97211,9 @@ class BaseDistribution {
} }
getNodeJsVersions() { getNodeJsVersions() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror); const initialUrl = this.getDistributionUrl();
const dataUrl = `${initialUrl}/index.json`; const dataUrl = `${initialUrl}/index.json`;
const headers = {}; const response = yield this.httpClient.getJson(dataUrl);
if (this.nodeInfo.mirrorToken) {
headers['Authorization'] = `Bearer ${this.nodeInfo.mirrorToken}`;
}
const response = yield this.httpClient.getJson(dataUrl, headers);
return response.result || []; return response.result || [];
}); });
} }
@@ -97310,7 +97228,7 @@ class BaseDistribution {
? `${fileName}.zip` ? `${fileName}.zip`
: `${fileName}.7z` : `${fileName}.7z`
: `${fileName}.tar.gz`; : `${fileName}.tar.gz`;
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror); const initialUrl = this.getDistributionUrl();
const url = `${initialUrl}/v${version}/${urlFileName}`; const url = `${initialUrl}/v${version}/${urlFileName}`;
return { return {
downloadUrl: url, downloadUrl: url,
@@ -97324,7 +97242,7 @@ class BaseDistribution {
let downloadPath = ''; let downloadPath = '';
core.info(`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`); core.info(`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`);
try { try {
downloadPath = yield tc.downloadTool(info.downloadUrl, undefined, this.nodeInfo.mirrorToken); downloadPath = yield tc.downloadTool(info.downloadUrl);
} }
catch (err) { catch (err) {
if (err instanceof tc.HTTPError && if (err instanceof tc.HTTPError &&
@@ -97348,7 +97266,7 @@ class BaseDistribution {
} }
acquireWindowsNodeFromFallbackLocation(version_1) { acquireWindowsNodeFromFallbackLocation(version_1) {
return __awaiter(this, arguments, void 0, function* (version, arch = os_1.default.arch()) { return __awaiter(this, arguments, void 0, function* (version, arch = os_1.default.arch()) {
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror); const initialUrl = this.getDistributionUrl();
const osArch = this.translateArchToDistUrl(arch); const osArch = this.translateArchToDistUrl(arch);
// Create temporary folder to download to // Create temporary folder to download to
const tempDownloadFolder = `temp_${(0, uuid_1.v4)()}`; const tempDownloadFolder = `temp_${(0, uuid_1.v4)()}`;
@@ -97362,18 +97280,18 @@ class BaseDistribution {
exeUrl = `${initialUrl}/v${version}/win-${osArch}/node.exe`; exeUrl = `${initialUrl}/v${version}/win-${osArch}/node.exe`;
libUrl = `${initialUrl}/v${version}/win-${osArch}/node.lib`; libUrl = `${initialUrl}/v${version}/win-${osArch}/node.lib`;
core.info(`Downloading only node binary from ${exeUrl}`); core.info(`Downloading only node binary from ${exeUrl}`);
const exePath = yield tc.downloadTool(exeUrl, undefined, this.nodeInfo.mirrorToken); const exePath = yield tc.downloadTool(exeUrl);
yield io.cp(exePath, path.join(tempDir, 'node.exe')); yield io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = yield tc.downloadTool(libUrl, undefined, this.nodeInfo.mirrorToken); const libPath = yield tc.downloadTool(libUrl);
yield io.cp(libPath, path.join(tempDir, 'node.lib')); yield io.cp(libPath, path.join(tempDir, 'node.lib'));
} }
catch (err) { catch (err) {
if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { if (err instanceof tc.HTTPError && err.httpStatusCode == 404) {
exeUrl = `${initialUrl}/v${version}/node.exe`; exeUrl = `${initialUrl}/v${version}/node.exe`;
libUrl = `${initialUrl}/v${version}/node.lib`; libUrl = `${initialUrl}/v${version}/node.lib`;
const exePath = yield tc.downloadTool(exeUrl, undefined, this.nodeInfo.mirrorToken); const exePath = yield tc.downloadTool(exeUrl);
yield io.cp(exePath, path.join(tempDir, 'node.exe')); yield io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = yield tc.downloadTool(libUrl, undefined, this.nodeInfo.mirrorToken); const libPath = yield tc.downloadTool(libUrl);
yield io.cp(libPath, path.join(tempDir, 'node.lib')); yield io.cp(libPath, path.join(tempDir, 'node.lib'));
} }
else { else {
@@ -97536,9 +97454,8 @@ class NightlyNodejs extends base_distribution_prerelease_1.default {
super(nodeInfo); super(nodeInfo);
this.distribution = 'nightly'; this.distribution = 'nightly';
} }
getDistributionUrl(mirror) { getDistributionUrl() {
const url = mirror || 'https://nodejs.org'; return 'https://nodejs.org/download/nightly';
return `${url}/download/nightly`;
} }
} }
exports["default"] = NightlyNodejs; exports["default"] = NightlyNodejs;
@@ -97636,7 +97553,7 @@ class OfficialBuilds extends base_distribution_1.default {
const versionInfo = yield this.getInfoFromManifest(this.nodeInfo.versionSpec, this.nodeInfo.stable, osArch, manifest); const versionInfo = yield this.getInfoFromManifest(this.nodeInfo.versionSpec, this.nodeInfo.stable, osArch, manifest);
if (versionInfo) { if (versionInfo) {
core.info(`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`); core.info(`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`);
downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth); downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.auth);
if (downloadPath) { if (downloadPath) {
toolPath = yield this.extractArchive(downloadPath, versionInfo, false); toolPath = yield this.extractArchive(downloadPath, versionInfo, false);
} }
@@ -97704,13 +97621,12 @@ class OfficialBuilds extends base_distribution_1.default {
version = super.evaluateVersions(versions); version = super.evaluateVersions(versions);
return version; return version;
} }
getDistributionUrl(mirror) { getDistributionUrl() {
const url = mirror || 'https://nodejs.org'; return `https://nodejs.org/dist`;
return `${url}/dist`;
} }
getManifest() { getManifest() {
core.debug('Getting manifest from actions/node-versions@main'); core.debug('Getting manifest from actions/node-versions@main');
return tc.getManifestFromRepo('actions', 'node-versions', this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth, 'main'); return tc.getManifestFromRepo('actions', 'node-versions', this.nodeInfo.auth, 'main');
} }
resolveLtsAliasFromManifest(versionSpec, stable, manifest) { resolveLtsAliasFromManifest(versionSpec, stable, manifest) {
var _a; var _a;
@@ -97793,9 +97709,8 @@ class RcBuild extends base_distribution_1.default {
constructor(nodeInfo) { constructor(nodeInfo) {
super(nodeInfo); super(nodeInfo);
} }
getDistributionUrl(mirror) { getDistributionUrl() {
const url = mirror || 'https://nodejs.org'; return 'https://nodejs.org/download/rc';
return `${url}/download/rc`;
} }
} }
exports["default"] = RcBuild; exports["default"] = RcBuild;
@@ -97818,9 +97733,8 @@ class CanaryBuild extends base_distribution_prerelease_1.default {
super(nodeInfo); super(nodeInfo);
this.distribution = 'v8-canary'; this.distribution = 'v8-canary';
} }
getDistributionUrl(mirror) { getDistributionUrl() {
const url = mirror || 'https://nodejs.org'; return 'https://nodejs.org/download/v8-canary';
return `${url}/download/v8-canary`;
} }
} }
exports["default"] = CanaryBuild; exports["default"] = CanaryBuild;
@@ -97900,8 +97814,6 @@ function run() {
if (version) { if (version) {
const token = core.getInput('token'); const token = core.getInput('token');
const auth = !token ? undefined : `token ${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 stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
const checkLatest = (core.getInput('check-latest') || 'false').toUpperCase() === 'TRUE'; const checkLatest = (core.getInput('check-latest') || 'false').toUpperCase() === 'TRUE';
const nodejsInfo = { const nodejsInfo = {
@@ -97909,9 +97821,7 @@ function run() {
checkLatest, checkLatest,
auth, auth,
stable, stable,
arch, arch
mirror,
mirrorToken
}; };
const nodeDistribution = (0, installer_factory_1.getNodejsDistribution)(nodejsInfo); const nodeDistribution = (0, installer_factory_1.getNodejsDistribution)(nodejsInfo);
yield nodeDistribution.setupNodeJs(); yield nodeDistribution.setupNodeJs();

View File

@@ -418,18 +418,3 @@ Please refer to the [Ensuring workflow access to your package - Configuring a pa
### always-auth input ### always-auth input
The always-auth input sets `always-auth=true` in .npmrc file. With this option set [npm](https://docs.npmjs.com/cli/v6/using-npm/config#always-auth)/yarn sends the authentication credentials when making a request to the registries. The always-auth input sets `always-auth=true` in .npmrc file. With this option set [npm](https://docs.npmjs.com/cli/v6/using-npm/config#always-auth)/yarn sends the authentication credentials when making a request to the registries.
## Use private mirror
It is possible to use a private mirror hosting Node.js binaries. This mirror must be a full mirror of the official Node.js distribution.
The mirror URL can be set using the `mirror` input.
It is possible to specify a token to authenticate with the mirror using the `mirror-token` input.
The token will be passed as a bearer token in the `Authorization` header.
```yaml
- uses: actions/setup-node@v4
with:
node-version: '14.x'
mirror: 'https://nodejs.org/dist'
mirror-token: 'your-mirror-token'
```

23
package-lock.json generated
View File

@@ -16,7 +16,7 @@
"@actions/glob": "^0.5.0", "@actions/glob": "^0.5.0",
"@actions/http-client": "^2.2.1", "@actions/http-client": "^2.2.1",
"@actions/io": "^1.0.2", "@actions/io": "^1.0.2",
"@actions/tool-cache": "^2.0.1", "@actions/tool-cache": "^2.0.2",
"semver": "^7.6.3", "semver": "^7.6.3",
"uuid": "^9.0.1" "uuid": "^9.0.1"
}, },
@@ -138,16 +138,16 @@
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
}, },
"node_modules/@actions/tool-cache": { "node_modules/@actions/tool-cache": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.2.tgz",
"integrity": "sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==", "integrity": "sha512-fBhNNOWxuoLxztQebpOaWu6WeVmuwa77Z+DxIZ1B+OYvGkGQon6kTVg6Z32Cb13WCuw0szqonK+hh03mJV7Z6w==",
"license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.2.6", "@actions/core": "^1.11.1",
"@actions/exec": "^1.0.0", "@actions/exec": "^1.0.0",
"@actions/http-client": "^2.0.1", "@actions/http-client": "^2.0.1",
"@actions/io": "^1.1.1", "@actions/io": "^1.1.1",
"semver": "^6.1.0", "semver": "^6.1.0"
"uuid": "^3.3.2"
} }
}, },
"node_modules/@actions/tool-cache/node_modules/semver": { "node_modules/@actions/tool-cache/node_modules/semver": {
@@ -158,15 +158,6 @@
"semver": "bin/semver.js" "semver": "bin/semver.js"
} }
}, },
"node_modules/@actions/tool-cache/node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
"bin": {
"uuid": "bin/uuid"
}
},
"node_modules/@ampproject/remapping": { "node_modules/@ampproject/remapping": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",

View File

@@ -32,7 +32,7 @@
"@actions/glob": "^0.5.0", "@actions/glob": "^0.5.0",
"@actions/http-client": "^2.2.1", "@actions/http-client": "^2.2.1",
"@actions/io": "^1.0.2", "@actions/io": "^1.0.2",
"@actions/tool-cache": "^2.0.1", "@actions/tool-cache": "^2.0.2",
"semver": "^7.6.3", "semver": "^7.6.3",
"uuid": "^9.0.1" "uuid": "^9.0.1"
}, },

View File

@@ -24,7 +24,7 @@ export default abstract class BaseDistribution {
}); });
} }
protected abstract getDistributionUrl(mirror: string): string; protected abstract getDistributionUrl(): string;
public async setupNodeJs() { public async setupNodeJs() {
let nodeJsVersions: INodeVersion[] | undefined; let nodeJsVersions: INodeVersion[] | undefined;
@@ -97,19 +97,10 @@ export default abstract class BaseDistribution {
} }
protected async getNodeJsVersions(): Promise<INodeVersion[]> { protected async getNodeJsVersions(): Promise<INodeVersion[]> {
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror); const initialUrl = this.getDistributionUrl();
const dataUrl = `${initialUrl}/index.json`; const dataUrl = `${initialUrl}/index.json`;
const headers = {}; const response = await this.httpClient.getJson<INodeVersion[]>(dataUrl);
if (this.nodeInfo.mirrorToken) {
headers['Authorization'] = `Bearer ${this.nodeInfo.mirrorToken}`;
}
const response = await this.httpClient.getJson<INodeVersion[]>(
dataUrl,
headers
);
return response.result || []; return response.result || [];
} }
@@ -126,7 +117,7 @@ export default abstract class BaseDistribution {
? `${fileName}.zip` ? `${fileName}.zip`
: `${fileName}.7z` : `${fileName}.7z`
: `${fileName}.tar.gz`; : `${fileName}.tar.gz`;
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror); const initialUrl = this.getDistributionUrl();
const url = `${initialUrl}/v${version}/${urlFileName}`; const url = `${initialUrl}/v${version}/${urlFileName}`;
return <INodeVersionInfo>{ return <INodeVersionInfo>{
@@ -143,11 +134,7 @@ export default abstract class BaseDistribution {
`Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}` `Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`
); );
try { try {
downloadPath = await tc.downloadTool( downloadPath = await tc.downloadTool(info.downloadUrl);
info.downloadUrl,
undefined,
this.nodeInfo.mirrorToken
);
} catch (err) { } catch (err) {
if ( if (
err instanceof tc.HTTPError && err instanceof tc.HTTPError &&
@@ -181,7 +168,7 @@ export default abstract class BaseDistribution {
version: string, version: string,
arch: string = os.arch() arch: string = os.arch()
): Promise<string> { ): Promise<string> {
const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror); const initialUrl = this.getDistributionUrl();
const osArch: string = this.translateArchToDistUrl(arch); const osArch: string = this.translateArchToDistUrl(arch);
// Create temporary folder to download to // Create temporary folder to download to
@@ -198,34 +185,18 @@ export default abstract class BaseDistribution {
core.info(`Downloading only node binary from ${exeUrl}`); core.info(`Downloading only node binary from ${exeUrl}`);
const exePath = await tc.downloadTool( const exePath = await tc.downloadTool(exeUrl);
exeUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(exePath, path.join(tempDir, 'node.exe')); await io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = await tc.downloadTool( const libPath = await tc.downloadTool(libUrl);
libUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(libPath, path.join(tempDir, 'node.lib')); await io.cp(libPath, path.join(tempDir, 'node.lib'));
} catch (err) { } catch (err) {
if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { if (err instanceof tc.HTTPError && err.httpStatusCode == 404) {
exeUrl = `${initialUrl}/v${version}/node.exe`; exeUrl = `${initialUrl}/v${version}/node.exe`;
libUrl = `${initialUrl}/v${version}/node.lib`; libUrl = `${initialUrl}/v${version}/node.lib`;
const exePath = await tc.downloadTool( const exePath = await tc.downloadTool(exeUrl);
exeUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(exePath, path.join(tempDir, 'node.exe')); await io.cp(exePath, path.join(tempDir, 'node.exe'));
const libPath = await tc.downloadTool( const libPath = await tc.downloadTool(libUrl);
libUrl,
undefined,
this.nodeInfo.mirrorToken
);
await io.cp(libPath, path.join(tempDir, 'node.lib')); await io.cp(libPath, path.join(tempDir, 'node.lib'));
} else { } else {
throw err; throw err;

View File

@@ -4,8 +4,6 @@ export interface NodeInputs {
auth?: string; auth?: string;
checkLatest: boolean; checkLatest: boolean;
stable: boolean; stable: boolean;
mirror: string;
mirrorToken: string;
} }
export interface INodeVersionInfo { export interface INodeVersionInfo {

View File

@@ -7,8 +7,7 @@ export default class NightlyNodejs extends BasePrereleaseNodejs {
super(nodeInfo); super(nodeInfo);
} }
protected getDistributionUrl(mirror: string): string { protected getDistributionUrl(): string {
const url = mirror || 'https://nodejs.org'; return 'https://nodejs.org/download/nightly';
return `${url}/download/nightly`;
} }
} }

View File

@@ -84,7 +84,7 @@ export default class OfficialBuilds extends BaseDistribution {
downloadPath = await tc.downloadTool( downloadPath = await tc.downloadTool(
versionInfo.downloadUrl, versionInfo.downloadUrl,
undefined, undefined,
this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth this.nodeInfo.auth
); );
if (downloadPath) { if (downloadPath) {
@@ -176,9 +176,8 @@ export default class OfficialBuilds extends BaseDistribution {
return version; return version;
} }
protected getDistributionUrl(mirror: string): string { protected getDistributionUrl(): string {
const url = mirror || 'https://nodejs.org'; return `https://nodejs.org/dist`;
return `${url}/dist`;
} }
private getManifest(): Promise<tc.IToolRelease[]> { private getManifest(): Promise<tc.IToolRelease[]> {
@@ -186,7 +185,7 @@ export default class OfficialBuilds extends BaseDistribution {
return tc.getManifestFromRepo( return tc.getManifestFromRepo(
'actions', 'actions',
'node-versions', 'node-versions',
this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth, this.nodeInfo.auth,
'main' 'main'
); );
} }

View File

@@ -6,8 +6,7 @@ export default class RcBuild extends BaseDistribution {
super(nodeInfo); super(nodeInfo);
} }
getDistributionUrl(mirror: string): string { getDistributionUrl(): string {
const url = mirror || 'https://nodejs.org'; return 'https://nodejs.org/download/rc';
return `${url}/download/rc`;
} }
} }

View File

@@ -7,8 +7,7 @@ export default class CanaryBuild extends BasePrereleaseNodejs {
super(nodeInfo); super(nodeInfo);
} }
protected getDistributionUrl(mirror: string): string { protected getDistributionUrl(): string {
const url = mirror || 'https://nodejs.org'; return 'https://nodejs.org/download/v8-canary';
return `${url}/download/v8-canary`;
} }
} }

View File

@@ -36,8 +36,6 @@ export async function run() {
if (version) { if (version) {
const token = core.getInput('token'); const token = core.getInput('token');
const auth = !token ? undefined : `token ${token}`; const auth = !token ? undefined : `token ${token}`;
const mirror = core.getInput('mirror');
const mirrorToken = core.getInput('mirror-token');
const stable = const stable =
(core.getInput('stable') || 'true').toUpperCase() === 'TRUE'; (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
const checkLatest = const checkLatest =
@@ -47,9 +45,7 @@ export async function run() {
checkLatest, checkLatest,
auth, auth,
stable, stable,
arch, arch
mirror,
mirrorToken
}; };
const nodeDistribution = getNodejsDistribution(nodejsInfo); const nodeDistribution = getNodejsDistribution(nodejsInfo);
await nodeDistribution.setupNodeJs(); await nodeDistribution.setupNodeJs();