From 5b90d5d2dd67e2b00a9d88cfd1ebacd1aa337ed8 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Thu, 26 Mar 2026 12:03:43 +0100 Subject: [PATCH 1/9] ci(NODE-7496): pin npm to 11.11.1 for Node 22 build variant --- .evergreen/config.yml | 4 ++++ .evergreen/generate_evergreen_tasks.js | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index fe48d3b9be..783b02fe74 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -3520,6 +3520,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 20.19.0 + NPM_VERSION: 11.11.1 CLIENT_ENCRYPTION: 'true' TEST_CSFLE: 'true' tasks: @@ -3575,6 +3576,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 22 + NPM_VERSION: 11.11.1 CLIENT_ENCRYPTION: 'true' TEST_CSFLE: 'true' tasks: @@ -3738,6 +3740,7 @@ buildvariants: run_on: windows-2022-latest-large expansions: NODE_LTS_VERSION: 20.19.0 + NPM_VERSION: 11.11.1 CLIENT_ENCRYPTION: 'false' TEST_CSFLE: 'false' tasks: @@ -3782,6 +3785,7 @@ buildvariants: run_on: windows-2022-latest-large expansions: NODE_LTS_VERSION: 22 + NPM_VERSION: 11.11.1 CLIENT_ENCRYPTION: 'false' TEST_CSFLE: 'false' tasks: diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 291f7670f4..56818c9d59 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -397,6 +397,13 @@ for (const { const expansions = { NODE_LTS_VERSION }; const taskNames = tasks.map(({ name }) => name); + // bundled npm version in node 22 (v10.9.7) can't upgrade itself to @latest, + // so we need to pin npm version for these variants to latest "upgradable" version + const major = parseInt(NODE_LTS_VERSION, 10); + if (major === 22) { + expansions.NPM_VERSION = '11.11.1'; + } + expansions.CLIENT_ENCRYPTION = String(!!clientEncryption); expansions.TEST_CSFLE = expansions.CLIENT_ENCRYPTION; From 3bcdbe47acb86180df7a3d0a2fe609fdadb5a187 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Thu, 26 Mar 2026 12:50:24 +0100 Subject: [PATCH 2/9] commit missing evergreen config.yml --- .evergreen/config.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 783b02fe74..1e890257f2 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -3520,7 +3520,6 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 20.19.0 - NPM_VERSION: 11.11.1 CLIENT_ENCRYPTION: 'true' TEST_CSFLE: 'true' tasks: @@ -3740,7 +3739,6 @@ buildvariants: run_on: windows-2022-latest-large expansions: NODE_LTS_VERSION: 20.19.0 - NPM_VERSION: 11.11.1 CLIENT_ENCRYPTION: 'false' TEST_CSFLE: 'false' tasks: From 5ada0e11e8c7713b86bf90d04ee2430603f1e643 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Thu, 26 Mar 2026 14:13:25 +0100 Subject: [PATCH 3/9] pin npm version for unit tests on node 22 --- .evergreen/config.yml | 2 ++ .evergreen/generate_evergreen_tasks.js | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 1e890257f2..c4e9c73a66 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1994,6 +1994,8 @@ tasks: updates: - {key: NODE_LTS_VERSION, value: '22'} - func: install dependencies + vars: + NPM_VERSION: 11.11.1 - func: run unit tests - name: run-unit-tests-node-24 tags: diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 56818c9d59..638b081396 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -485,7 +485,9 @@ const unitTestTasks = Array.from( updateExpansions({ NODE_LTS_VERSION }), - { func: 'install dependencies' }, + parseInt(NODE_LTS_VERSION, 10) === 22 + ? { func: 'install dependencies', vars: { NPM_VERSION: '11.11.1' } } + : { func: 'install dependencies' }, { func: 'run unit tests' } ] }; From a490479fca00c8085fcc86797ba68de782958ed7 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Fri, 27 Mar 2026 10:01:01 +0100 Subject: [PATCH 4/9] improve version parsing --- .evergreen/generate_evergreen_tasks.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 638b081396..06f21bf12a 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -20,6 +20,14 @@ const { UBUNTU_22_OS } = require('./ci_matrix_constants'); +// TODO(NODE-7499): unpin npm version once Node 22 ships a bundled npm that can upgrade itself +const NODE22_NPM_VERSION = '11.11.1'; + +/** Returns the major version number from a Node.js version string (e.g. 'v22.11.0', '20.19.0', 22). */ +function nodeMajorVersion(version) { + return semver.coerce(String(version))?.major; +} + const OPERATING_SYSTEMS = [ { name: DEFAULT_OS, @@ -397,11 +405,10 @@ for (const { const expansions = { NODE_LTS_VERSION }; const taskNames = tasks.map(({ name }) => name); - // bundled npm version in node 22 (v10.9.7) can't upgrade itself to @latest, + // bundled npm version in node v22.22.2 (v10.9.7) can't upgrade itself to @latest, // so we need to pin npm version for these variants to latest "upgradable" version - const major = parseInt(NODE_LTS_VERSION, 10); - if (major === 22) { - expansions.NPM_VERSION = '11.11.1'; + if (nodeMajorVersion(NODE_LTS_VERSION) === 22) { + expansions.NPM_VERSION = NODE22_NPM_VERSION; } expansions.CLIENT_ENCRYPTION = String(!!clientEncryption); @@ -485,8 +492,8 @@ const unitTestTasks = Array.from( updateExpansions({ NODE_LTS_VERSION }), - parseInt(NODE_LTS_VERSION, 10) === 22 - ? { func: 'install dependencies', vars: { NPM_VERSION: '11.11.1' } } + nodeMajorVersion(NODE_LTS_VERSION) === 22 + ? { func: 'install dependencies', vars: { NPM_VERSION: NODE22_NPM_VERSION } } : { func: 'install dependencies' }, { func: 'run unit tests' } ] From a1f327b64af2f1e0dfc90d61cff3c5e77de03eaa Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Fri, 27 Mar 2026 14:44:33 +0100 Subject: [PATCH 5/9] skip nodeless windows tests for load-balanced topology --- .evergreen/config.yml | 3 --- .evergreen/generate_evergreen_tasks.js | 6 ++++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index c4e9c73a66..a7cf5352f7 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -4070,9 +4070,6 @@ buildvariants: - test-latest-server-v1-api - test-x509-authentication - test-atlas-connectivity - - test-rapid-load-balanced - - test-latest-load-balanced - - test-auth-kerberos - test-auth-ldap - test-socks5-csfle - test-socks5-tls diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 06f21bf12a..03270df416 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -841,7 +841,6 @@ const nodelessTasks = [ 'test-atlas-connectivity', 'test-rapid-load-balanced', 'test-latest-load-balanced', - 'test-auth-kerberos', 'test-auth-ldap', 'test-socks5-csfle', 'test-socks5-tls', @@ -865,7 +864,10 @@ BUILD_VARIANTS.push({ name: 'windows-nodeless', display_name: 'Windows Nodeless', run_on: WINDOWS_OS, - tasks: nodelessTasks, + // TODO(NODE-7500): Investigate why those tests are failing to setup (missing haproxy) + tasks: nodelessTasks.filter( + t => !['test-latest-load-balanced', 'test-rapid-load-balanced'].includes(t) + ), expansions: nodelessExpansions }); From d8d6f43a81bacaf675df7fe17b88852cfae7a647 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Fri, 27 Mar 2026 15:33:01 +0100 Subject: [PATCH 6/9] remove TODO --- .evergreen/generate_evergreen_tasks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 03270df416..7ee347149e 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -864,7 +864,7 @@ BUILD_VARIANTS.push({ name: 'windows-nodeless', display_name: 'Windows Nodeless', run_on: WINDOWS_OS, - // TODO(NODE-7500): Investigate why those tests are failing to setup (missing haproxy) + // haproxy doesn't have windows installation tasks: nodelessTasks.filter( t => !['test-latest-load-balanced', 'test-rapid-load-balanced'].includes(t) ), From ee1f2b4cef9d582bfc272b944cf71d0feaa0f762 Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Fri, 27 Mar 2026 15:40:37 +0100 Subject: [PATCH 7/9] remove changes in nodeless test setup in favor of another PR --- .evergreen/generate_evergreen_tasks.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 7ee347149e..cc652a260d 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -864,10 +864,7 @@ BUILD_VARIANTS.push({ name: 'windows-nodeless', display_name: 'Windows Nodeless', run_on: WINDOWS_OS, - // haproxy doesn't have windows installation - tasks: nodelessTasks.filter( - t => !['test-latest-load-balanced', 'test-rapid-load-balanced'].includes(t) - ), + tasks: nodelessTasks, expansions: nodelessExpansions }); From a4759c103aafae0058a1e7bc5dc16e43782c066e Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Fri, 27 Mar 2026 15:41:23 +0100 Subject: [PATCH 8/9] revert all changes --- .evergreen/generate_evergreen_tasks.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index cc652a260d..06f21bf12a 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -841,6 +841,7 @@ const nodelessTasks = [ 'test-atlas-connectivity', 'test-rapid-load-balanced', 'test-latest-load-balanced', + 'test-auth-kerberos', 'test-auth-ldap', 'test-socks5-csfle', 'test-socks5-tls', From fef64d54d5fdfdd53d0bbea2cc8c7a784f45158d Mon Sep 17 00:00:00 2001 From: Sergey Zelenov Date: Fri, 27 Mar 2026 15:44:03 +0100 Subject: [PATCH 9/9] regenerate config --- .evergreen/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index a7cf5352f7..c4e9c73a66 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -4070,6 +4070,9 @@ buildvariants: - test-latest-server-v1-api - test-x509-authentication - test-atlas-connectivity + - test-rapid-load-balanced + - test-latest-load-balanced + - test-auth-kerberos - test-auth-ldap - test-socks5-csfle - test-socks5-tls