diff --git a/lib/manager/composer/artifacts.ts b/lib/manager/composer/artifacts.ts
index cf209a4d60202c3c5e566ffeb6bebd9ac2dd8dae..7d28900b89a7c13077916c0ec42531e90ba5f1fe 100644
--- a/lib/manager/composer/artifacts.ts
+++ b/lib/manager/composer/artifacts.ts
@@ -16,11 +16,11 @@ export async function updateArtifacts(
   config: UpdateArtifactsConfig
 ): Promise<UpdateArtifactsResult[] | null> {
   logger.debug(`composer.updateArtifacts(${packageFileName})`);
-  process.env.COMPOSER_CACHE_DIR =
-    process.env.COMPOSER_CACHE_DIR ||
-    upath.join(config.cacheDir, './others/composer');
-  await fs.ensureDir(process.env.COMPOSER_CACHE_DIR);
-  logger.debug('Using composer cache ' + process.env.COMPOSER_CACHE_DIR);
+  const env = getChildProcessEnv(['COMPOSER_CACHE_DIR']);
+  env.COMPOSER_CACHE_DIR =
+    env.COMPOSER_CACHE_DIR || upath.join(config.cacheDir, './others/composer');
+  await fs.ensureDir(env.COMPOSER_CACHE_DIR);
+  logger.debug('Using composer cache ' + env.COMPOSER_CACHE_DIR);
   const lockFileName = packageFileName.replace(/\.json$/, '.lock');
   const existingLockFileContent = await platform.getFile(lockFileName);
   if (!existingLockFileContent) {
@@ -95,7 +95,6 @@ export async function updateArtifacts(
       const localAuthFileName = upath.join(cwd, 'auth.json');
       await fs.outputFile(localAuthFileName, JSON.stringify(authJson));
     }
-    const env = getChildProcessEnv(['COMPOSER_CACHE_DIR']);
     const startTime = process.hrtime();
     let cmd: string;
     if (config.binarySource === 'docker') {
@@ -104,7 +103,7 @@ export async function updateArtifacts(
       if (config.dockerUser) {
         cmd += `--user=${config.dockerUser} `;
       }
-      const volumes = [config.localDir, process.env.COMPOSER_CACHE_DIR];
+      const volumes = [config.localDir, env.COMPOSER_CACHE_DIR];
       cmd += volumes.map(v => `-v "${v}":"${v}" `).join('');
       const envVars = ['COMPOSER_CACHE_DIR'];
       cmd += envVars.map(e => `-e ${e} `);
diff --git a/lib/manager/gomod/artifacts.ts b/lib/manager/gomod/artifacts.ts
index b182ad8fa46d72370b7a5e7b8e65790dcf7d11cb..b437619d76bf6e87d9bc855d3e759eaba81971ca 100644
--- a/lib/manager/gomod/artifacts.ts
+++ b/lib/manager/gomod/artifacts.ts
@@ -14,10 +14,11 @@ export async function updateArtifacts(
   config: UpdateArtifactsConfig
 ): Promise<UpdateArtifactsResult[] | null> {
   logger.debug(`gomod.updateArtifacts(${goModFileName})`);
-  process.env.GOPATH =
-    process.env.GOPATH || join(config.cacheDir, './others/go');
-  await ensureDir(process.env.GOPATH);
-  logger.debug('Using GOPATH: ' + process.env.GOPATH);
+  const customEnv = ['GOPATH', 'GOPROXY', 'GONOSUMDB'];
+  const env = getChildProcessEnv(customEnv);
+  env.GOPATH = env.GOPATH || join(config.cacheDir, './others/go');
+  await ensureDir(env.GOPATH);
+  logger.debug('Using GOPATH: ' + env.GOPATH);
   const sumFileName = goModFileName.replace(/\.mod$/, '.sum');
   const existingGoSumContent = await platform.getFile(sumFileName);
   if (!existingGoSumContent) {
@@ -38,8 +39,6 @@ export async function updateArtifacts(
     }
     await outputFile(localGoModFileName, massagedGoMod);
     const localGoSumFileName = join(config.localDir, sumFileName);
-    const customEnv = ['GOPATH', 'GOPROXY', 'GONOSUMDB'];
-    const env = getChildProcessEnv(customEnv);
     const startTime = process.hrtime();
     let cmd: string;
     if (config.binarySource === 'docker') {
@@ -48,7 +47,7 @@ export async function updateArtifacts(
       if (config.dockerUser) {
         cmd += `--user=${config.dockerUser} `;
       }
-      const volumes = [config.localDir, process.env.GOPATH];
+      const volumes = [config.localDir, env.GOPATH];
       cmd += volumes.map(v => `-v "${v}":"${v}" `).join('');
       const envVars = customEnv;
       cmd += envVars.map(e => `-e ${e} `).join('');
diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts
index db07754815b50fab38e9d1021e659e3b7e285279..23c54cfe06a46d3ee5ca68257759a0dd8533e034 100644
--- a/lib/manager/npm/post-update/index.ts
+++ b/lib/manager/npm/post-update/index.ts
@@ -328,22 +328,20 @@ export async function getAdditionalFiles(
   await writeExistingFiles(config, packageFiles);
   await writeUpdatedPackageFiles(config);
 
-  process.env.NPM_CONFIG_CACHE =
-    process.env.NPM_CONFIG_CACHE || upath.join(config.cacheDir, './others/npm');
-  await fs.ensureDir(process.env.NPM_CONFIG_CACHE);
-  process.env.YARN_CACHE_FOLDER =
-    process.env.YARN_CACHE_FOLDER ||
-    upath.join(config.cacheDir, './others/yarn');
-  await fs.ensureDir(process.env.YARN_CACHE_FOLDER);
-  process.env.npm_config_store =
-    process.env.npm_config_store ||
-    upath.join(config.cacheDir, './others/pnpm');
-  await fs.ensureDir(process.env.npm_config_store);
   const env = getChildProcessEnv([
     'NPM_CONFIG_CACHE',
     'YARN_CACHE_FOLDER',
     'npm_config_store',
   ]);
+  env.NPM_CONFIG_CACHE =
+    env.NPM_CONFIG_CACHE || upath.join(config.cacheDir, './others/npm');
+  await fs.ensureDir(env.NPM_CONFIG_CACHE);
+  env.YARN_CACHE_FOLDER =
+    env.YARN_CACHE_FOLDER || upath.join(config.cacheDir, './others/yarn');
+  await fs.ensureDir(env.YARN_CACHE_FOLDER);
+  env.npm_config_store =
+    env.npm_config_store || upath.join(config.cacheDir, './others/pnpm');
+  await fs.ensureDir(env.npm_config_store);
   env.NODE_ENV = 'dev';
 
   let token = '';
diff --git a/lib/manager/pipenv/artifacts.ts b/lib/manager/pipenv/artifacts.ts
index 5b0d3a819cb5d11d43d7391e5ab7c17114694e66..4e47dcf8910bfd629796472a4bc7d0a39f34cd53 100644
--- a/lib/manager/pipenv/artifacts.ts
+++ b/lib/manager/pipenv/artifacts.ts
@@ -13,10 +13,13 @@ export async function updateArtifacts(
   config: UpdateArtifactsConfig
 ): Promise<UpdateArtifactsResult[] | null> {
   logger.debug(`pipenv.updateArtifacts(${pipfileName})`);
-  process.env.PIPENV_CACHE_DIR =
-    process.env.PIPENV_CACHE_DIR || join(config.cacheDir, './others/pipenv');
-  await ensureDir(process.env.PIPENV_CACHE_DIR);
-  logger.debug('Using pipenv cache ' + process.env.PIPENV_CACHE_DIR);
+
+  const env = getChildProcessEnv(['LC_ALL', 'LANG', 'PIPENV_CACHE_DIR']);
+  env.PIPENV_CACHE_DIR =
+    env.PIPENV_CACHE_DIR || join(config.cacheDir, './others/pipenv');
+  await ensureDir(env.PIPENV_CACHE_DIR);
+  logger.debug('Using pipenv cache ' + env.PIPENV_CACHE_DIR);
+
   const lockFileName = pipfileName + '.lock';
   const existingLockFileContent = await platform.getFile(lockFileName);
   if (!existingLockFileContent) {
@@ -30,7 +33,6 @@ export async function updateArtifacts(
     const localPipfileFileName = join(config.localDir, pipfileName);
     await outputFile(localPipfileFileName, newPipfileContent);
     const localLockFileName = join(config.localDir, lockFileName);
-    const env = getChildProcessEnv(['LC_ALL', 'LANG', 'PIPENV_CACHE_DIR']);
     const startTime = process.hrtime();
     let cmd: string;
     if (config.binarySource === 'docker') {
@@ -39,7 +41,7 @@ export async function updateArtifacts(
       if (config.dockerUser) {
         cmd += `--user=${config.dockerUser} `;
       }
-      const volumes = [config.localDir, process.env.PIPENV_CACHE_DIR];
+      const volumes = [config.localDir, env.PIPENV_CACHE_DIR];
       cmd += volumes.map(v => `-v "${v}":"${v}" `).join('');
       const envVars = ['LC_ALL', 'LANG', 'PIPENV_CACHE_DIR'];
       cmd += envVars.map(e => `-e ${e} `).join('');