Skip to content

Commit

Permalink
fix(yarn): improve yarn proxy configuration (#27984)
Browse files Browse the repository at this point in the history
  • Loading branch information
rarkins committed Mar 18, 2024
1 parent f4a96f8 commit 814d2ec
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 9 deletions.
4 changes: 4 additions & 0 deletions docs/usage/self-hosted-experimental.md
Expand Up @@ -176,3 +176,7 @@ Don't combine with `redisUrl`, Redis would be preferred over SQlite.
## `RENOVATE_X_SUPPRESS_PRE_COMMIT_WARNING`

Suppress the pre-commit support warning in PR bodies.

## `RENOVATE_X_YARN_IGNORE_PROXY`

Skip configuring global Yarn proxy settings if HTTP proxy environment variables are detected.
2 changes: 2 additions & 0 deletions lib/modules/manager/npm/post-update/yarn.spec.ts
Expand Up @@ -175,7 +175,9 @@ describe('modules/manager/npm/post-update/yarn', () => {
const res = await yarnHelper.generateLockFile('some-dir', {}, config);
expect(res.lockFile).toBe('package-lock-contents');
expect(fixSnapshots(execSnapshots)).toMatchObject([
{ cmd: 'yarn config unset --home httpProxy' },
{ cmd: 'yarn config set --home httpProxy http://proxy' },
{ cmd: 'yarn config unset --home httpsProxy' },
{ cmd: 'yarn config set --home httpsProxy http://proxy' },
{},
]);
Expand Down
22 changes: 13 additions & 9 deletions lib/modules/manager/npm/post-update/yarn.ts
Expand Up @@ -210,15 +210,19 @@ export async function generateLockFile(
commands.push(`yarn set version ${quote(yarnUpdate.newValue!)}`);
}

if (process.env.HTTP_PROXY && !isYarn1) {
commands.push(
`yarn config set --home httpProxy ${quote(process.env.HTTP_PROXY)}`,
);
}
if (process.env.HTTPS_PROXY && !isYarn1) {
commands.push(
`yarn config set --home httpsProxy ${quote(process.env.HTTPS_PROXY)}`,
);
if (!process.env.RENOVATE_X_YARN_IGNORE_PROXY) {
if (process.env.HTTP_PROXY && !isYarn1) {
commands.push('yarn config unset --home httpProxy');
commands.push(
`yarn config set --home httpProxy ${quote(process.env.HTTP_PROXY)}`,
);
}
if (process.env.HTTPS_PROXY && !isYarn1) {
commands.push('yarn config unset --home httpsProxy');
commands.push(
`yarn config set --home httpsProxy ${quote(process.env.HTTPS_PROXY)}`,
);
}
}

// This command updates the lock file based on package.json
Expand Down
4 changes: 4 additions & 0 deletions lib/modules/manager/npm/readme.md
Expand Up @@ -19,3 +19,7 @@ If Renovate detects a `packageManager` setting for Yarn in `package.json` then i
Yarn itself does not natively recognize/support the `HTTP_PROXY` and `HTTPS_PROXY` environment variables.
If Renovate detects Yarn 2+, and one or both of those variables are present, then it will run commands like `yarn config set --home httpProxy http://proxy` prior to executing `yarn install`.
This will result in the `~/.yarnrc.yml` file being created or modified with these settings, and the settings are not removed afterwards.

Configuration/conversion of `NO_PROXY` to Yarn config is not supported.

You can configure `RENOVATE_X_YARN_IGNORE_PROXY=true` as an environment variable to skip the configuring of Yarn proxy (e.g. if you already configure these proxy settings yourself in `~/.yarnrc.yml`);

0 comments on commit 814d2ec

Please sign in to comment.