From 85996c357e1f7681d105f346aff2fd87ac821643 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Thu, 14 Sep 2023 16:33:40 +0200 Subject: [PATCH] test(NODE-5618): use npm 9 on eol node versions (#3862) --- .evergreen/config.in.yml | 3 ++- .evergreen/config.yml | 37 +++++++++++++++++++++++++- .evergreen/generate_evergreen_tasks.js | 34 +++++++++++++++++------ .evergreen/generate_mongosh_tasks.js | 9 ++++--- .evergreen/install-dependencies.sh | 10 ++++--- 5 files changed, 76 insertions(+), 17 deletions(-) diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index 23e5e79359..c973a9d38c 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -413,7 +413,7 @@ functions: working_dir: "src" script: | ${PREPARE_SHELL} - NODE_LTS_VERSION=${NODE_LTS_VERSION} NPM_OPTIONS=${NPM_OPTIONS}\ + NODE_LTS_VERSION=${NODE_LTS_VERSION} NPM_OPTIONS=${NPM_OPTIONS} NPM_VERSION=${NPM_VERSION}\ bash ${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh "run atlas tests": @@ -1048,6 +1048,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 18 + NPM_VERSION: 9 - func: bootstrap mongo-orchestration vars: VERSION: rapid diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 27e25b1802..dac56ec6ad 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -365,7 +365,7 @@ functions: working_dir: src script: | ${PREPARE_SHELL} - NODE_LTS_VERSION=${NODE_LTS_VERSION} NPM_OPTIONS=${NPM_OPTIONS}\ + NODE_LTS_VERSION=${NODE_LTS_VERSION} NPM_OPTIONS=${NPM_OPTIONS} NPM_VERSION=${NPM_VERSION}\ bash ${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh run atlas tests: - command: shell.exec @@ -986,6 +986,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 18 + NPM_VERSION: 9 - func: bootstrap mongo-orchestration vars: VERSION: rapid @@ -2378,6 +2379,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: run unit tests - name: run-lint-checks tags: @@ -2386,6 +2388,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: run lint checks - name: check-types-typescript-next tags: @@ -2404,6 +2407,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: compile driver vars: TS_VERSION: current @@ -2443,6 +2447,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: '5.0' @@ -2457,6 +2462,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: '5.0' @@ -2466,6 +2472,7 @@ tasks: func: run bson-ext test vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 TEST_NPM_SCRIPT: check:test - name: run-bson-ext-unit tags: @@ -2474,6 +2481,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: '5.0' @@ -2483,6 +2491,7 @@ tasks: func: run bson-ext test vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 TEST_NPM_SCRIPT: check:unit - name: run-custom-csfle-tests-5.0-pinned-commit tags: @@ -2491,6 +2500,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: '5.0' @@ -2506,6 +2516,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: '5.0' @@ -2521,6 +2532,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: rapid @@ -2536,6 +2548,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: rapid @@ -2551,6 +2564,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: latest @@ -2566,6 +2580,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 - func: bootstrap mongo-orchestration vars: VERSION: latest @@ -2986,6 +3001,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: browser-repl @@ -2997,6 +3013,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: browser-runtime-electron @@ -3008,6 +3025,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: cli-repl @@ -3019,6 +3037,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: connectivity-tests @@ -3030,6 +3049,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: mongosh @@ -3041,6 +3061,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: node-runtime-worker-thread @@ -3052,6 +3073,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh tests for package vars: mongosh_package: service-provider-server @@ -3062,6 +3084,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: compile mongosh - name: verify-mongosh-scopes tags: @@ -3070,6 +3093,7 @@ tasks: - func: install dependencies vars: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 - func: run mongosh package scope test task_groups: - name: serverless_task_group @@ -3128,6 +3152,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 CLIENT_ENCRYPTION: true tasks: - test-latest-server @@ -3179,6 +3204,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 14 + NPM_VERSION: 9 CLIENT_ENCRYPTION: true tasks: - test-latest-server @@ -3230,6 +3256,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 CLIENT_ENCRYPTION: true tasks: - test-latest-server @@ -3279,6 +3306,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 18 + NPM_VERSION: latest CLIENT_ENCRYPTION: true tasks: - test-latest-server @@ -3327,6 +3355,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 20 + NPM_VERSION: latest CLIENT_ENCRYPTION: true tasks: - test-latest-server @@ -3424,6 +3453,7 @@ buildvariants: run_on: windows-vsCurrent-large expansions: NODE_LTS_VERSION: 14 + NPM_VERSION: 9 tasks: - test-latest-server - test-latest-replica_set @@ -3468,6 +3498,7 @@ buildvariants: run_on: windows-vsCurrent-large expansions: NODE_LTS_VERSION: 16 + NPM_VERSION: 9 tasks: - test-latest-server - test-latest-replica_set @@ -3510,6 +3541,7 @@ buildvariants: run_on: windows-vsCurrent-large expansions: NODE_LTS_VERSION: 18 + NPM_VERSION: latest tasks: - test-latest-server - test-latest-replica_set @@ -3552,6 +3584,7 @@ buildvariants: run_on: windows-vsCurrent-large expansions: NODE_LTS_VERSION: 20 + NPM_VERSION: latest tasks: - test-latest-server - test-latest-replica_set @@ -3632,6 +3665,7 @@ buildvariants: run_on: ubuntu1804-large expansions: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 tasks: - aws-latest-auth-test-run-aws-auth-test-with-regular-aws-credentials - aws-latest-auth-test-run-aws-auth-test-with-assume-role-credentials @@ -3716,6 +3750,7 @@ buildvariants: run_on: rhel80-large expansions: NODE_LTS_VERSION: 12 + NPM_VERSION: 8 tasks: - serverless_task_group - name: rhel8-no-auth-tests diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 8c92a19c64..d1afb096f0 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -388,12 +388,21 @@ for (const { return !isAWSTask && !isSkippedTaskOnWindows; }); + function npmVersion(nodeVersion) { + switch (nodeVersion) { + case 16: + case 14: return 9; + case 12: return 8; + default: return 'latest'; + } + } + for (const NODE_LTS_VERSION of testedNodeVersions) { const nodeLTSCodeName = versions.find(({ versionNumber }) => versionNumber === NODE_LTS_VERSION).codeName; const nodeLtsDisplayName = `Node${NODE_LTS_VERSION}`; const name = `${osName}-${NODE_LTS_VERSION >= 20 ? nodeLtsDisplayName : nodeLTSCodeName}`; const display_name = `${osDisplayName} ${nodeLtsDisplayName}`; - const expansions = { NODE_LTS_VERSION }; + const expansions = { NODE_LTS_VERSION, NPM_VERSION: npmVersion(NODE_LTS_VERSION) }; const taskNames = tasks.map(({ name }) => name); if (clientEncryption) { @@ -447,7 +456,8 @@ SINGLETON_TASKS.push( { func: 'install dependencies', vars: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 } }, { func: 'run unit tests' } @@ -460,7 +470,8 @@ SINGLETON_TASKS.push( { func: 'install dependencies', vars: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 } }, { func: 'run lint checks' } @@ -481,7 +492,8 @@ function* makeTypescriptTasks() { { func: 'install dependencies', vars: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 } }, { @@ -559,7 +571,8 @@ BUILD_VARIANTS.push({ display_name: 'MONGODB-AWS Auth test', run_on: UBUNTU_OS, expansions: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 }, tasks: AWS_AUTH_TASKS }); @@ -574,6 +587,7 @@ const oneOffFuncs = [ func: 'run bson-ext test', vars: { NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8, TEST_NPM_SCRIPT: 'check:test' } }, @@ -582,6 +596,7 @@ const oneOffFuncs = [ func: 'run bson-ext test', vars: { NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8, TEST_NPM_SCRIPT: 'check:unit' } } @@ -594,7 +609,8 @@ const oneOffFuncAsTasks = oneOffFuncs.map(oneOffFunc => ({ { func: 'install dependencies', vars: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 } }, { @@ -620,7 +636,8 @@ for (const version of ['5.0', 'rapid', 'latest']) { { func: 'install dependencies', vars: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 } }, { @@ -669,7 +686,8 @@ BUILD_VARIANTS.push({ display_name: 'Serverless Test', run_on: DEFAULT_OS, expansions: { - NODE_LTS_VERSION: LOWEST_LTS + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 8 }, tasks: ['serverless_task_group'] }); diff --git a/.evergreen/generate_mongosh_tasks.js b/.evergreen/generate_mongosh_tasks.js index 6d689ba706..2db138ef2f 100644 --- a/.evergreen/generate_mongosh_tasks.js +++ b/.evergreen/generate_mongosh_tasks.js @@ -17,7 +17,8 @@ const mongoshTestTasks = scopes.map(packageName => { { func: 'install dependencies', vars: { - NODE_LTS_VERSION: 16 + NODE_LTS_VERSION: 16, + NPM_VERSION: 9 } }, { @@ -37,7 +38,8 @@ const compileTask = { { func: 'install dependencies', vars: { - NODE_LTS_VERSION: 16 + NODE_LTS_VERSION: 16, + NPM_VERSION: 9 } }, { func: 'compile mongosh' } @@ -51,7 +53,8 @@ const scopeVerificationTask = { { func: 'install dependencies', vars: { - NODE_LTS_VERSION: 16 + NODE_LTS_VERSION: 16, + NPM_VERSION: 9 } }, { func: 'run mongosh package scope test' } diff --git a/.evergreen/install-dependencies.sh b/.evergreen/install-dependencies.sh index 9132237a67..dcebeb0009 100644 --- a/.evergreen/install-dependencies.sh +++ b/.evergreen/install-dependencies.sh @@ -2,6 +2,10 @@ set -o errexit # Exit the script with error if any of the commands fail NODE_LTS_VERSION=${NODE_LTS_VERSION:-12} +# npm version can be defined in the environment for cases where we need to install +# a later version. We default to 8 when not defined since the default node version +# is 12. +NPM_VERSION=${NPM_VERSION:-8} source "${PROJECT_DIRECTORY}/.evergreen/init-node-and-npm-env.sh" @@ -93,10 +97,8 @@ else mv "${NODE_ARTIFACTS_PATH}/${node_directory}" "${NODE_ARTIFACTS_PATH}/nodejs" fi -# Cannot upgrade npm version for node 12 -if [[ $operating_system != "win" ]] && [[ $NODE_LTS_VERSION != 12 ]]; then - # Update npm to latest when we can - npm install --global npm@latest +if [[ $operating_system != "win" ]]; then + npm install --global npm@$NPM_VERSION hash -r fi