diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index da92af6b2318b2745e5685051a9f356711410304..34640c50aa74f2f82102f0c1445d9a50e4a90af0 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -460,6 +460,10 @@ Use this if you are extending a complex preset but won't want to use every "sub It would take the entire `"config:base"` preset - which contains a lot of sub-presets - but ignore the `":prHourlyLimit2"` rule. +## ignoreScripts + +Applicable for npm and composer only for now. Set this to `true` if running scripts causes problems. + ## ignoreUnstable By default, Renovate won't update any package versions to unstable versions (e.g. `4.0.0-rc3`) unless the current version has the same major.minor.patch and was _already_ unstable (e.g. it was already on `4.0.0-rc2`). Renovate will not "jump" unstable versions automatically, e.g. if you are on `4.0.0-rc2` and newer versions `4.0.0` and `4.1.0-alpha.1` exist then Renovate will update you to `4.0.0` only. If you need to force permanent unstable updates for a package, you can add a package rule setting `ignoreUnstable` to `false`. diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts index 973c915964248e2fb9f59547806080131e47a620..f531c7d91521d8117cc0f8fa7e157ba15a0f8b0d 100644 --- a/lib/config/definitions.ts +++ b/lib/config/definitions.ts @@ -386,6 +386,14 @@ const options: RenovateOptions[] = [ type: 'string', default: 'low', }, + { + name: 'ignoreScripts', + description: + 'Configure this to true if trustLevel is high but you wish to skip running scripts when updating lock files', + stage: 'package', + type: 'boolean', + default: false, + }, { name: 'platform', description: 'Platform type of repository', diff --git a/lib/manager/common.ts b/lib/manager/common.ts index dfea00da9f22401d6187c48754dd6154c4bf6028..d023298de5c701fd7e5bfa93e3be5f02e0368c33 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -30,6 +30,7 @@ export interface UpdateArtifactsConfig extends ManagerConfig { compatibility?: Record<string, string>; cacheDir?: string; postUpdateOptions?: string[]; + ignoreScripts?: boolean; } export interface PackageUpdateConfig { diff --git a/lib/manager/composer/artifacts.ts b/lib/manager/composer/artifacts.ts index cf2583dda1edb1e33456cf13bc287e55b073a93d..a6d3025bbe2ff328c87e58f16249e382e43817d1 100644 --- a/lib/manager/composer/artifacts.ts +++ b/lib/manager/composer/artifacts.ts @@ -123,7 +123,7 @@ export async function updateArtifacts( ('update ' + updatedDeps.join(' ')).trim() + ' --with-dependencies'; } args += ' --ignore-platform-reqs --no-ansi --no-interaction'; - if (global.trustLevel !== 'high') { + if (global.trustLevel !== 'high' || config.ignoreScripts) { args += ' --no-scripts --no-autoloader'; } logger.debug({ cmd, args }, 'composer command'); diff --git a/lib/manager/npm/post-update/pnpm.ts b/lib/manager/npm/post-update/pnpm.ts index ac60717b7a386279aad2304ff3487f72e464a3fd..f776a3df208a12cddb51d80a8ffdd615f85ee6cf 100644 --- a/lib/manager/npm/post-update/pnpm.ts +++ b/lib/manager/npm/post-update/pnpm.ts @@ -91,7 +91,7 @@ export async function generateLockFile( logger.debug(`Using pnpm: ${cmd}`); cmd += ' install'; cmd += ' --lockfile-only'; - if (global.trustLevel !== 'high') { + if (global.trustLevel !== 'high' || config.ignoreScripts) { cmd += ' --ignore-scripts'; cmd += ' --ignore-pnpmfile'; } diff --git a/renovate-schema.json b/renovate-schema.json index 8c702340b1d76e64a38bb4d95eb0edfd4158b47a..def7970e272241a624edc654bd68e8d2ff169d9b 100644 --- a/renovate-schema.json +++ b/renovate-schema.json @@ -200,6 +200,11 @@ "type": "string", "default": "low" }, + "ignoreScripts": { + "description": "Configure this to true if trustLevel is high but you wish to skip running scripts when updating lock files", + "type": "boolean", + "default": false + }, "platform": { "description": "Platform type of repository", "type": "string",