From be316c5d0bda13855ceffbf3a422a6ce35c9928d Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Fri, 5 Aug 2022 18:13:59 +0200
Subject: [PATCH] feat(manager/npm): full npm buildpack support (#16976)

* feat(manager/npm): full npm buildpack support

* chore: fix test
---
 lib/modules/manager/npm/post-update/npm.spec.ts | 11 +++++++----
 lib/modules/manager/npm/post-update/npm.ts      | 13 ++++++-------
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/lib/modules/manager/npm/post-update/npm.spec.ts b/lib/modules/manager/npm/post-update/npm.spec.ts
index 6bdb012a7b..7a8ae8a90b 100644
--- a/lib/modules/manager/npm/post-update/npm.spec.ts
+++ b/lib/modules/manager/npm/post-update/npm.spec.ts
@@ -258,16 +258,18 @@ describe('modules/manager/npm/post-update/npm', () => {
     expect(fs.readLocalFile).toHaveBeenCalledTimes(1);
     expect(res.lockFile).toBe('package-lock-contents');
     expect(execSnapshots).toMatchObject([
-      { cmd: 'docker pull renovate/node' },
-      { cmd: 'docker ps --filter name=renovate_node -aq' },
+      { cmd: 'docker pull renovate/sidecar' },
+      { cmd: 'docker ps --filter name=renovate_sidecar -aq' },
       {
         cmd:
-          'docker run --rm --name=renovate_node --label=renovate_child ' +
+          'docker run --rm --name=renovate_sidecar --label=renovate_child ' +
           '-v "/tmp":"/tmp" ' +
           '-e BUILDPACK_CACHE_DIR ' +
           '-w "some-dir" ' +
-          'renovate/node ' +
+          'renovate/sidecar ' +
           'bash -l -c "' +
+          'install-tool node 16.16.0 ' +
+          '&& ' +
           'install-tool npm 6.0.0 ' +
           '&& ' +
           'hash -d npm 2>/dev/null || true ' +
@@ -296,6 +298,7 @@ describe('modules/manager/npm/post-update/npm', () => {
     expect(fs.readLocalFile).toHaveBeenCalledTimes(1);
     expect(res.lockFile).toBe('package-lock-contents');
     expect(execSnapshots).toMatchObject([
+      { cmd: 'install-tool node 16.16.0' },
       { cmd: 'install-tool npm 6.0.0' },
       { cmd: 'hash -d npm 2>/dev/null || true' },
       {
diff --git a/lib/modules/manager/npm/post-update/npm.ts b/lib/modules/manager/npm/post-update/npm.ts
index b757111cde..7cf39a57ea 100644
--- a/lib/modules/manager/npm/post-update/npm.ts
+++ b/lib/modules/manager/npm/post-update/npm.ts
@@ -19,7 +19,7 @@ import {
 } from '../../../../util/fs';
 import type { PostUpdateConfig, Upgrade } from '../../types';
 import { composeLockFile, parseLockFile } from '../utils';
-import { getNodeConstraint, getNodeUpdate } from './node-version';
+import { getNodeToolConstraint } from './node-version';
 import type { GenerateLockFileResult } from './types';
 
 export async function generateLockFile(
@@ -55,8 +55,6 @@ export async function generateLockFile(
       cmdOptions += ' --ignore-scripts';
     }
 
-    const tagConstraint =
-      getNodeUpdate(upgrades) ?? (await getNodeConstraint(config));
     const extraEnv: ExtraEnv = {
       NPM_CONFIG_CACHE: env.NPM_CONFIG_CACHE,
       npm_config_store: env.npm_config_store,
@@ -64,11 +62,12 @@ export async function generateLockFile(
     const execOptions: ExecOptions = {
       cwdFile: lockFileName,
       extraEnv,
-      toolConstraints: [npmToolConstraint],
+      toolConstraints: [
+        await getNodeToolConstraint(config, upgrades),
+        npmToolConstraint,
+      ],
       docker: {
-        image: 'node',
-        tagScheme: 'node',
-        tagConstraint,
+        image: 'sidecar',
       },
     };
     // istanbul ignore if
-- 
GitLab