mirror of
https://github.com/actions/setup-node.git
synced 2026-07-04 13:35:37 +00:00
Compare commits
7 Commits
897bdcf4d1
...
cfacd16c73
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cfacd16c73 | ||
|
|
97ca147735 | ||
|
|
aa363ded8f | ||
|
|
1c7b2db920 | ||
|
|
55b7d827be | ||
|
|
473cb1b506 | ||
|
|
574c6daa52 |
22
.github/workflows/publish-immutable-actions.yml
vendored
Normal file
22
.github/workflows/publish-immutable-actions.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
name: 'Publish Immutable Action Version'
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checking out
|
||||
uses: actions/checkout@v4
|
||||
- name: Publish
|
||||
id: publish
|
||||
uses: actions/publish-immutable-action@0.0.1
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@ -7,6 +7,7 @@ import * as auth from '../src/authutil';
|
||||
import * as cacheUtils from '../src/cache-utils';
|
||||
|
||||
let rcFile: string;
|
||||
let pkgJson: string;
|
||||
|
||||
describe('authutil tests', () => {
|
||||
const _runnerDir = path.join(__dirname, 'runner');
|
||||
@ -25,10 +26,12 @@ describe('authutil tests', () => {
|
||||
process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo';
|
||||
process.env['RUNNER_TEMP'] = tempDir;
|
||||
rcFile = path.join(tempDir, '.npmrc');
|
||||
pkgJson = path.join(tempDir, 'package.json');
|
||||
}, 100000);
|
||||
|
||||
beforeEach(async () => {
|
||||
await io.rmRF(rcFile);
|
||||
await io.rmRF(pkgJson);
|
||||
// if (fs.existsSync(rcFile)) {
|
||||
// fs.unlinkSync(rcFile);
|
||||
// }
|
||||
@ -113,6 +116,15 @@ describe('authutil tests', () => {
|
||||
expect(rc['always-auth']).toBe('false');
|
||||
});
|
||||
|
||||
it('Automatically configures npm scope from package.json', async () => {
|
||||
process.env['INPUT_SCOPE'] = '';
|
||||
fs.writeFileSync(pkgJson, '{"name":"@myscope/mypackage"}');
|
||||
await auth.configAuthentication('https://registry.npmjs.org', '');
|
||||
|
||||
const rc = readRcFile(rcFile);
|
||||
expect(rc['@myscope:registry']).toBe('https://registry.npmjs.org/');
|
||||
});
|
||||
|
||||
it('Sets up npmrc for always-auth true', async () => {
|
||||
await auth.configAuthentication('https://registry.npmjs.org/', 'true');
|
||||
expect(fs.statSync(rcFile)).toBeDefined();
|
||||
|
||||
8
dist/setup/index.js
vendored
8
dist/setup/index.js
vendored
@ -93883,7 +93883,7 @@ class BaseDistribution {
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
const toolPath = yield this.extractArchive(downloadPath, info);
|
||||
const toolPath = yield this.extractArchive(downloadPath, info, true);
|
||||
core.info('Done');
|
||||
return toolPath;
|
||||
});
|
||||
@ -93933,7 +93933,7 @@ class BaseDistribution {
|
||||
return toolPath;
|
||||
});
|
||||
}
|
||||
extractArchive(downloadPath, info) {
|
||||
extractArchive(downloadPath, info, isOfficialArchive) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
//
|
||||
// Extract
|
||||
@ -93948,7 +93948,7 @@ class BaseDistribution {
|
||||
// on Windows runners without PowerShell Core.
|
||||
//
|
||||
// For default PowerShell Windows it should contain extension type to unpack it.
|
||||
if (extension === '.zip') {
|
||||
if (extension === '.zip' && isOfficialArchive) {
|
||||
const renamedArchive = `${downloadPath}.zip`;
|
||||
fs_1.default.renameSync(downloadPath, renamedArchive);
|
||||
extPath = yield tc.extractZip(renamedArchive);
|
||||
@ -94186,7 +94186,7 @@ class OfficialBuilds extends base_distribution_1.default {
|
||||
core.info(`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`);
|
||||
downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.auth);
|
||||
if (downloadPath) {
|
||||
toolPath = yield this.extractArchive(downloadPath, versionInfo);
|
||||
toolPath = yield this.extractArchive(downloadPath, versionInfo, false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
8
package-lock.json
generated
8
package-lock.json
generated
@ -4429,12 +4429,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
||||
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.2",
|
||||
"braces": "^3.0.3",
|
||||
"picomatch": "^2.3.1"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@ -25,6 +25,12 @@ function writeRegistryToFile(
|
||||
if (!scope && registryUrl.indexOf('npm.pkg.github.com') > -1) {
|
||||
scope = github.context.repo.owner;
|
||||
}
|
||||
if (!scope) {
|
||||
const namePrefix = packageJson('name')?.match(/^(@[^/]+)\//);
|
||||
if (namePrefix) {
|
||||
scope = namePrefix[1];
|
||||
}
|
||||
}
|
||||
if (scope && scope[0] != '@') {
|
||||
scope = '@' + scope;
|
||||
}
|
||||
@ -57,3 +63,14 @@ function writeRegistryToFile(
|
||||
process.env.NODE_AUTH_TOKEN || 'XXXXX-XXXXX-XXXXX-XXXXX'
|
||||
);
|
||||
}
|
||||
|
||||
function packageJson(prop: string){
|
||||
const pkgPath: string = path.resolve(process.env['RUNNER_TEMP'] || process.cwd(), 'package.json');
|
||||
try {
|
||||
const json = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
||||
|
||||
return prop ? json[prop] : json;
|
||||
} catch(e) {
|
||||
core.debug(`Unable to read from package.json`);
|
||||
}
|
||||
}
|
||||
|
||||
@ -150,7 +150,7 @@ export default abstract class BaseDistribution {
|
||||
throw err;
|
||||
}
|
||||
|
||||
const toolPath = await this.extractArchive(downloadPath, info);
|
||||
const toolPath = await this.extractArchive(downloadPath, info, true);
|
||||
core.info('Done');
|
||||
|
||||
return toolPath;
|
||||
@ -210,7 +210,8 @@ export default abstract class BaseDistribution {
|
||||
|
||||
protected async extractArchive(
|
||||
downloadPath: string,
|
||||
info: INodeVersionInfo | null
|
||||
info: INodeVersionInfo | null,
|
||||
isOfficialArchive?: boolean
|
||||
) {
|
||||
//
|
||||
// Extract
|
||||
@ -225,7 +226,7 @@ export default abstract class BaseDistribution {
|
||||
// on Windows runners without PowerShell Core.
|
||||
//
|
||||
// For default PowerShell Windows it should contain extension type to unpack it.
|
||||
if (extension === '.zip') {
|
||||
if (extension === '.zip' && isOfficialArchive) {
|
||||
const renamedArchive = `${downloadPath}.zip`;
|
||||
fs.renameSync(downloadPath, renamedArchive);
|
||||
extPath = await tc.extractZip(renamedArchive);
|
||||
|
||||
@ -88,7 +88,11 @@ export default class OfficialBuilds extends BaseDistribution {
|
||||
);
|
||||
|
||||
if (downloadPath) {
|
||||
toolPath = await this.extractArchive(downloadPath, versionInfo);
|
||||
toolPath = await this.extractArchive(
|
||||
downloadPath,
|
||||
versionInfo,
|
||||
false
|
||||
);
|
||||
}
|
||||
} else {
|
||||
core.info(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user