diff --git a/eng/1es-redirect.yml b/eng/1es-redirect.yml index ab01ac4..769c103 100644 --- a/eng/1es-redirect.yml +++ b/eng/1es-redirect.yml @@ -36,6 +36,7 @@ extends: - 1ES.PT.Tag-refs/tags/canary settings: skipBuildTagsForGitHubPullRequests: true + networkIsolationPolicy: Permissive, CFSClean sdl: git: longpaths: true diff --git a/eng/test-steps.yml b/eng/test-steps.yml index a064524..bfc9a31 100644 --- a/eng/test-steps.yml +++ b/eng/test-steps.yml @@ -9,6 +9,9 @@ steps: inputs: version: 6.x - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml + parameters: + npmrcPath: $(Agent.TempDirectory)/oad.npmrc + - script: npm ci displayName: npm ci - script: npm run lint @@ -17,6 +20,8 @@ steps: displayName: prettier - script: npm test displayName: test + env: + NPM_CONFIG_USERCONFIG: $(Agent.TempDirectory)/oad.npmrc - script: npm pack displayName: pack - task: CopyFiles@2 diff --git a/src/lib/validators/openApiDiff.ts b/src/lib/validators/openApiDiff.ts index 363f2b2..b7c1816 100644 --- a/src/lib/validators/openApiDiff.ts +++ b/src/lib/validators/openApiDiff.ts @@ -19,6 +19,11 @@ const _ = require("lodash") const execFile = util.promisify(child_process.execFile) +const getAutoRestNpmrcPath = (): string | undefined => { + const candidates = [process.env.npm_config_userconfig, process.env.NPM_CONFIG_USERCONFIG] + return candidates.find(value => typeof value === "string" && value.trim().length > 0) +} + export type Options = { readonly consoleLogLevel?: unknown readonly logFilepath?: unknown @@ -241,13 +246,23 @@ export class OpenApiDiff { ] const args = [...autoRestArgs, ...swaggerArgs, ...commonArgs] + const autoRestNpmrcPath = getAutoRestNpmrcPath() + const env = { + ...process.env, + NODE_OPTIONS: "--max-old-space-size=8192", + ...(autoRestNpmrcPath ? { npm_config_userconfig: autoRestNpmrcPath } : {}) + } + + if (autoRestNpmrcPath) { + log.debug(`Using npm user config for AutoRest: ${autoRestNpmrcPath}`) + } log.debug(`Executing: "${autoRestFile} ${args.join(" ")}"`) const { stderr } = await execFile(autoRestFile, args, { encoding: "utf8", maxBuffer: 1024 * 1024 * 64, - env: { ...process.env, NODE_OPTIONS: "--max-old-space-size=8192" } + env }) if (stderr) { // autorest 3.8.0 emits deprecation message to stderr with exit code 0