This commit is contained in:
Tyler Watson 2023-05-10 20:48:52 +03:00 committed by GitHub
commit 6ef9fd2a0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 12 deletions

View file

@ -25,6 +25,8 @@ inputs:
description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.'
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.'
username:
description: 'Used to specify username/password authentication for NPM, used for Azure DevOps Artifacts and registries which expect a username and password.'
# 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
outputs:

18
dist/setup/index.js vendored
View file

@ -71049,15 +71049,15 @@ const os = __importStar(__nccwpck_require__(2037));
const path = __importStar(__nccwpck_require__(1017));
const core = __importStar(__nccwpck_require__(2186));
const github = __importStar(__nccwpck_require__(5438));
function configAuthentication(registryUrl, alwaysAuth) {
function configAuthentication(registryUrl, alwaysAuth, username) {
const npmrc = path.resolve(process.env['RUNNER_TEMP'] || process.cwd(), '.npmrc');
if (!registryUrl.endsWith('/')) {
registryUrl += '/';
}
writeRegistryToFile(registryUrl, npmrc, alwaysAuth);
writeRegistryToFile(registryUrl, npmrc, alwaysAuth, username);
}
exports.configAuthentication = configAuthentication;
function writeRegistryToFile(registryUrl, fileLocation, alwaysAuth) {
function writeRegistryToFile(registryUrl, fileLocation, alwaysAuth, username) {
let scope = core.getInput('scope');
if (!scope && registryUrl.indexOf('npm.pkg.github.com') > -1) {
scope = github.context.repo.owner;
@ -71080,7 +71080,14 @@ function writeRegistryToFile(registryUrl, fileLocation, alwaysAuth) {
});
}
// Remove http: or https: from front of registry.
const authString = registryUrl.replace(/(^\w+:|^)/, '') + ':_authToken=${NODE_AUTH_TOKEN}';
const registryPrefix = registryUrl.replace(/(^\w+:|^)/, '');
if (username) {
newContents += registryPrefix + `:username=${username}${os.EOL}`;
newContents += registryPrefix + `:email=dummy value` + os.EOL;
}
const authString = username
? registryPrefix + ':_password=${NODE_AUTH_TOKEN}'
: registryPrefix + ':_authToken=${NODE_AUTH_TOKEN}';
const registryString = `${scope}registry=${registryUrl}`;
const alwaysAuthString = `always-auth=${alwaysAuth}`;
newContents += `${authString}${os.EOL}${registryString}${os.EOL}${alwaysAuthString}`;
@ -72084,8 +72091,9 @@ function run() {
yield util_1.printEnvDetailsAndSetOutput();
const registryUrl = core.getInput('registry-url');
const alwaysAuth = core.getInput('always-auth');
const username = core.getInput('username');
if (registryUrl) {
auth.configAuthentication(registryUrl, alwaysAuth);
auth.configAuthentication(registryUrl, alwaysAuth, username);
}
if (cache && cache_utils_1.isCacheFeatureAvailable()) {
const cacheDependencyPath = core.getInput('cache-dependency-path');

View file

@ -15,7 +15,7 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/actions/setup-node.git"
"url": "git+https://github.com/rapid-platform/setup-node.git"
},
"keywords": [
"actions",

View file

@ -4,7 +4,11 @@ import * as path from 'path';
import * as core from '@actions/core';
import * as github from '@actions/github';
export function configAuthentication(registryUrl: string, alwaysAuth: string) {
export function configAuthentication(
registryUrl: string,
alwaysAuth: string,
username?: string
) {
const npmrc: string = path.resolve(
process.env['RUNNER_TEMP'] || process.cwd(),
'.npmrc'
@ -13,13 +17,14 @@ export function configAuthentication(registryUrl: string, alwaysAuth: string) {
registryUrl += '/';
}
writeRegistryToFile(registryUrl, npmrc, alwaysAuth);
writeRegistryToFile(registryUrl, npmrc, alwaysAuth, username);
}
function writeRegistryToFile(
registryUrl: string,
fileLocation: string,
alwaysAuth: string
alwaysAuth: string,
username?: string
) {
let scope: string = core.getInput('scope');
if (!scope && registryUrl.indexOf('npm.pkg.github.com') > -1) {
@ -44,8 +49,17 @@ function writeRegistryToFile(
});
}
// Remove http: or https: from front of registry.
const authString: string =
registryUrl.replace(/(^\w+:|^)/, '') + ':_authToken=${NODE_AUTH_TOKEN}';
const registryPrefix = registryUrl.replace(/(^\w+:|^)/, '');
if (username) {
newContents += registryPrefix + `:username=${username}${os.EOL}`;
newContents += registryPrefix + `:email=dummy value` + os.EOL;
}
const authString: string = username
? registryPrefix + ':_password=${NODE_AUTH_TOKEN}'
: registryPrefix + ':_authToken=${NODE_AUTH_TOKEN}';
const registryString = `${scope}registry=${registryUrl}`;
const alwaysAuthString = `always-auth=${alwaysAuth}`;
newContents += `${authString}${os.EOL}${registryString}${os.EOL}${alwaysAuthString}`;

View file

@ -55,8 +55,9 @@ export async function run() {
const registryUrl: string = core.getInput('registry-url');
const alwaysAuth: string = core.getInput('always-auth');
const username: string | undefined = core.getInput('username');
if (registryUrl) {
auth.configAuthentication(registryUrl, alwaysAuth);
auth.configAuthentication(registryUrl, alwaysAuth, username);
}
if (cache && isCacheFeatureAvailable()) {